重構(gòu)Android XML布局文件

2018-03-12 10:06 更新

重構(gòu)Android XML布局文件

除了常見的重構(gòu)外,IntelliJ IDEA 還為 Android 布局定義 XML 文件提供了許多特定于 Android 的重構(gòu)。其中,大部分的這些重構(gòu)都可以在以下兩種設(shè)計模式下使用:

  • 手動模式,位于目標(biāo)布局定義文件打開的“編輯器”選項卡中,以及從“結(jié)構(gòu)(Structure)”工具窗口中。
  • 在Android UI Designer中,從“設(shè)計(Design)”窗格或“組件樹(Component Tree)”中。

您可以通過在打開布局定義文件的編輯器中切換“設(shè)計(Design)”和“文本(Text)”選項卡,以便在這兩種模式之間進(jìn)行切換。

Android XML布局文件

提取樣式重構(gòu)

Android 樣式有助于將應(yīng)用程序設(shè)計與應(yīng)用程序功能分開,就像“層疊樣式表(CSS)”一樣。

通過“提取樣式(extract style)”重構(gòu),您可以從布局 XML 標(biāo)簽創(chuàng)建樣式。IntelliJ IDEA 在 /res/values/styles.xml 文件中創(chuàng)建樣式聲明,并將標(biāo)簽屬性轉(zhuǎn)換為在 item 元素中聲明的樣式屬性。好處是,現(xiàn)在不再需要分析整個資源定義文件來更新標(biāo)記屬性來編輯布局。所有你需要做的就是更新樣式定義,然后在引用樣式的任何位置都將自動應(yīng)用更改。 

應(yīng)用提取樣式重構(gòu)的操作如下:

  1. 執(zhí)行以下操作之一:
    • 在可視模式下,在“設(shè)計(Design)”窗格或“組件樹(Component Tree)”的畫布上的定義中選擇使用源 XML 標(biāo)記的組件。
    • 在手動模式下,將光標(biāo)放置在源 XML 標(biāo)記內(nèi)的任何位置。
  2. 從主菜單中選擇:Refactor | 重構(gòu)此項(Refactor | Refactor This)或按 Ctrl+Shift+Alt+T。在出現(xiàn)的彈出窗口中,從 Extract 組中選擇 Style?;蛘撸谶x擇的上下文菜單上選擇:Refactor | 提取| 提取樣式(Refactor | Extract | Extract Style)。
  3. 在打開的“提取Android樣式”對話框中,指定要創(chuàng)建的樣式的名稱,并選擇要作為樣式屬性包含的標(biāo)簽屬性。
  4. 要使 IntelliJ IDEA 通過將標(biāo)簽屬性替換為對新創(chuàng)建的樣式的引用來自動更新布局定義,請選中“在提取樣式后啟用'盡可能使用樣式'重構(gòu)(Launch 'Use Style Where Possible' refactoring after the style is extracted)”復(fù)選框。

內(nèi)聯(lián)樣式重構(gòu)

此重構(gòu)與“提取樣式(Extract Style)”重構(gòu)相反,并導(dǎo)致將樣式中定義的所有屬性添加到應(yīng)用此樣式的一個或所有組件。當(dāng)您需要將父樣式與其繼承者合并時,也會使用此重構(gòu)。

您可以從樣式定義或應(yīng)用樣式的組件調(diào)用“內(nèi)聯(lián)樣式(Inline Style)”重構(gòu)。在第一種情況下,IntelliJ IDEA 刪除樣式定義,并將相應(yīng)的屬性添加到使用它的所有組件。從組件調(diào)用重構(gòu)時,可以將其應(yīng)用于具有此樣式的所有組件,也可以僅應(yīng)用于當(dāng)前組件。

如果需要使用內(nèi)聯(lián)樣式重構(gòu),請執(zhí)行以下操作之一:

  • 從樣式定義中調(diào)用重構(gòu):
    1. 打開樣式定義文件,將光標(biāo)定位到要內(nèi)聯(lián)樣式的名稱,然后從上下文菜單選擇:Refactor | 內(nèi)聯(lián)(Refactor | Inline)或按 Ctrl+Alt+N。
    2. 打開的 Inline Android 樣式對話框只提供一個默認(rèn)選擇的選項(內(nèi)聯(lián)所有引用和刪除樣式)。因此,IntelliJ IDEA 將樣式屬性轉(zhuǎn)換為 XML 標(biāo)簽,將它們添加到使用樣式的所有組件的定義中,并刪除樣式定義。
      • 要立即應(yīng)用更改,請單擊“重構(gòu)(Refactor)”。
      • 要在應(yīng)用之前打開查找工具窗口并預(yù)覽更改,請單擊“預(yù)覽(Preview)”。
  • 從組件定義中調(diào)用重構(gòu):
    1. 選擇一個有問題樣式的組件:
      • 在可視模式下,在“設(shè)計(Design)”窗格或“組件樹(Component Tree)”中選擇具有此樣式的組件。然后從主菜單或從選擇的上下文菜單中選擇選擇:Refactor | 內(nèi)聯(lián)樣式(Refactor | Inline Style)。
      • 在手動模式下,在“結(jié)構(gòu)(Structure)”視圖中選擇具有此樣式的組件,然后從主菜單或從選擇的上下文菜單中選擇:Refactor | 內(nèi)聯(lián)樣式(Refactor | Inline Style )。
    2. 在打開的 Inline Android Style 對話框中,配置重構(gòu):
      • 要讓 IntelliJ IDEA 將樣式的屬性轉(zhuǎn)換為 XML 標(biāo)簽,將它們添加到使用樣式的所有組件的定義中,并刪除樣式定義,請選擇“內(nèi)聯(lián)所有引用并刪除樣式(Inline all references and remove the style)”。
      • 要僅將重構(gòu)應(yīng)用于當(dāng)前組件,請選擇“內(nèi)聯(lián)此用法并保留樣式(Inline this usage and keep the style)”。
    3. 指定您想要如何應(yīng)用更改。
      • 要立即應(yīng)用更改,請單擊“重構(gòu)(Refactor)”。
      • 要在應(yīng)用之前打開查找工具窗口并預(yù)覽更改,請單擊“預(yù)覽(Preview)”。

提取布局

IntelliJ IDEA 支持重新使用 Android 布局:IntelliJ IDEA 將現(xiàn)有布局定義的一部分移至單獨的布局定義文件,并通過自動插入的 <include/> 標(biāo)記在原始布局定義中引用它。在 IntelliJ IDEA 中,此操作稱為“提取布局重構(gòu)(extract layout refactoring)”。

提取布局

IntelliJ IDEA 提取布局重構(gòu)的操作如下所示:

  1. 選擇要作為單獨布局提取的片段。執(zhí)行以下操作之一:
    • 在手動模式下,選擇要提取的代碼片段或?qū)⒐鈽?biāo)定位到片段的根元素中。
    • 在可視模式下,選擇要在設(shè)計中提取的組件或一組組件。窗格中或組件樹中。
  2. 從主菜單中選擇:Refactor | 重構(gòu)此項(Refactor | Refactor This)或按 Ctrl+Shift+Alt+T。在出現(xiàn)的彈出列表中,從“提?。‥xtract)”組中選擇“布局(Layout)”?;蛘?,從選擇的上下文菜單中選擇:Refactor | 提取| 提取布局(Refactor | Extract | Extract Layout)。
  3. 在打開的“提取Android布局(Extract Android Layout)”對話框中,指定將存儲提取的布局定義的文件的名稱以及其父文件夾的名稱。您不需要預(yù)先創(chuàng)建文件和文件夾,IntelliJ IDEA 會自動創(chuàng)建它們。
  4. 為布局創(chuàng)建配置限定符列表。此列表確定了必須提供的一組替代資源,以便在特定目標(biāo)設(shè)備配置中運行應(yīng)用程序。
    • 要向該集添加限定符,請在“可用限定符”列表中選擇它,單擊該按鈕,然后指定限定符的值。
    • 要從集合中刪除限定符,請在選擇限定符列表中選擇它,并單擊按鈕。

    有關(guān)限定符的詳細(xì)信息、它們的含義、可接受的值和格式的詳細(xì)信息,請參閱替代資源的配置限定符規(guī)范。

內(nèi)聯(lián)布局重構(gòu)

此重構(gòu)與“提取布局(Extract Layout)”重構(gòu)相反,并導(dǎo)致嵌入通過<include/>標(biāo)記引用的布局并刪除標(biāo)記。

從布局定義文件中的 <include/> 標(biāo)簽調(diào)用該內(nèi)嵌布局( Inline Layout)重構(gòu)。您可以讓 IntelliJ IDEA 將其應(yīng)用于所有引用并刪除布局定義文件,或僅刪除當(dāng)前引用。 

內(nèi)聯(lián)布局重構(gòu)的操作如下所示:

  1. 打開引用有關(guān)布局的 XML 定義文件。
  2. 導(dǎo)航到引用相關(guān)布局的 <include/> 標(biāo)簽,并將光標(biāo)放置在布局名稱處。
  3. 執(zhí)行以下操作之一:
    • 從主菜單選擇:重構(gòu)| 內(nèi)聯(lián)(Refactor | Inline)。
    • 從主菜單選擇:重構(gòu)| 重構(gòu)此項(Refactor | Refactor This),然后在打開彈出列表中選擇“內(nèi)聯(lián)(Inline)”。
    • 按 Ctrl+Alt+N。
    • 從上下文菜單中選擇:重構(gòu)| 內(nèi)聯(lián)(Refactor | Inline)。
  4. 在打開的 Inline Android Layout 對話框中,配置重構(gòu):
    • 要使 IntelliJ IDEA 將布局嵌入到通過 <include/> 標(biāo)簽引用的所有文件中,并刪除引用的布局定義文件,請選擇“內(nèi)聯(lián)所有引用并刪除文件(Inline all references and remove the file)”。
    • 要將重構(gòu)應(yīng)用于當(dāng)前引用,請選擇“內(nèi)聯(lián)此用法并保留該文件(Inline this usage and keep the file)”。
  5. 指定您想要應(yīng)用更改的方式:
    • 要立即應(yīng)用更改,請單擊“重構(gòu)(Refactor)”。
    • 要在應(yīng)用之前打開查找工具窗口并預(yù)覽更改,請單擊“預(yù)覽(Preview)”。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號