Android 開發小工具之:Tools 屬性
http://blog.chengyunfeng.com/?p=755#ixzz4apLZhfmiandroid
今天來介紹一些 Android 開發過程當中比較有用可是你們又不經常使用的小工具。這些小工具能夠提升 Android 應用開發的效率、還能夠提升代碼質量。因此仍是有必要使用的。vim
首先介紹佈局文件中的 tools 屬性。app
若是你用 Android Studio 建立一個簡單的示例項目,在生成的佈局文件中會有這麼一行內容:編輯器
在 tools 命名空間下定義了一些屬性就是咱們要介紹的 tools 屬性。 顧名思義,這些屬性都是爲編輯工具準備的,具體來講就是 Android Studio 和佈局文件編譯器(AAPT)。 在開發程序的時候,經過這些屬性來告訴編輯器一些額外的信息。工具
這個屬性是爲 Lint 準備的,屬性的取值爲逗號分隔的 Lint 問題 ID。告訴 Lint 在檢測代碼的時候,這些問題不用檢測。例如:佈局
<string name=」show_all_apps」 tools:ignore=」MissingTranslation」>All</string>測試
這個屬性也是爲 Lint 準備的。和 Java 註解 @TargetApi 同樣。取值能夠爲 Android 版本代號或者對應的整數值。例如:google
<GridLayout tools:targetApi=」ICE_CREAM_SANDWICH」 >spa
Lint 和 Android Studio 都會使用該屬性。取值爲 語言和地區縮寫。若是設置該值爲非英文類型,則 Studio 不會執行拼寫檢查。該屬性一般出如今資源文件的根元素上。用來告訴 Lint 該文件應該用在那種語言環境中。 例如:values/strings.xml 文件 設置該屬性爲 es設計
<resources xmlns:tools=」http://schemas.android.com/tools」 tools:locale=」es」>
上面的設置告訴工具,默認的文件夾中的資源爲西班牙語而不是英語。
Lint 和 Android Studio 都會使用該屬性。出如今佈局根元素中,用來告訴工具該佈局文件和哪一個 Activity 關聯。這樣在設計的時候,佈局編輯器會使用相關聯的 Activity 的 theme 來渲染該佈局文件。取值爲 manifests 文件中的 activity name 值同樣。例如:
<android.support.v7.widget.GridLayout xmlns:android=」http://schemas.android.com/apk/res/android」 xmlns:tools=」http://schemas.android.com/tools」tools:context=」.MainActivity」 … >
該屬性由 Android Studio 使用。一般用在 <fragment> 元素中,用來告訴編輯器該 fragment 使用的是哪一個佈局文件。
<fragment android:name=」com.example.master.ItemListFragment」 tools:layout=」@android:layout/list_content」 />
Android Studio 使用該屬性來渲染列表元素。能夠用在 AdapterView 的子 View 中。例如 <ListView>、<GridView>、<ExpandableListView> 等。這樣在設計的時候,編輯器能夠用指定的內容來顯示預覽內容。
<ListView
android:id=」@android:id/list」
android:layout_width=」match_parent」
android:layout_height=」match_parent」
tools:listitem=」@android:layout/simple_list_item_2″ />
Android Studio 使用該屬性。一般用在被其餘佈局文件引用的<include> 佈局文件中。告訴編輯器該佈局文件用在另一個佈局文件中。例如
<?xml version=」1.0″ encoding=」utf-8″?>
<TextView xmlns:android=」http://schemas.android.com/apk/res/android」
xmlns:tools=」http://schemas.android.com/tools」
android:text=」@string/hello_world」
android:layout_width=」wrap_content」
android:layout_height=」wrap_content」
tools:showIn=」@layout/activity_main」 />
Android Studio 使用該屬性。用在佈局文件的根元素中,告訴編輯器在 ActionBar 上的菜單內容。取值爲定義的 menu 的 id,多個 id 用逗號分隔;還可使用定義 menu 的 xml 文件的名字。例如:
<?xml version=」1.0″ encoding=」utf-8″?>
<LinearLayout xmlns:android=」http://schemas.android.com/apk/res/android」
xmlns:tools=」http://schemas.android.com/tools」
android:orientation=」vertical」
android:layout_width=」match_parent」
android:layout_height=」match_parent」
tools:menu=」menu1,menu2″ />
Android Studio 使用該屬性。用在佈局文件的根元素中,告訴編輯器在 ActionBar 上的導航模式。取值爲 「standard」、 「list」 和」tabs」 之一。
<?xml version=」1.0″ encoding=」utf-8″?>
<LinearLayout xmlns:android=」http://schemas.android.com/apk/res/android」
xmlns:tools=」http://schemas.android.com/tools」
android:orientation=」vertical」
android:layout_width=」match_parent」
android:layout_height=」match_parent」
tools:actionBarNavMode=」tabs」 />
除了上面這些屬性之外,標準的 Android 佈局屬性均可以當作 tools 屬性來使用。佈局編輯器用這些屬性來選擇佈局文件。這些屬性被稱之爲 「 設計時佈局屬性 」,他們只被佈局編輯器使用,編譯後的代碼中不存在這些內容。
例如
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="@string/hello_world" tools:text="hello world" android:layout_width="wrap_content" tools:layout_width="400dp" tools:background="@android:color/holo_red_dark" android:layout_height="wrap_content"/> </RelativeLayout> 上面的佈局文件,在佈局編輯器中預覽圖以下: 這樣作的好處是,在編輯佈局文件的時候,不用爲了預覽效果而給真正的屬性設置一些測試的值,而後當程序發佈的時候, 這些測試的內容忘記刪除了。例如 爲了預覽 EditText 的顯示效果,你把一段文字設置到 text屬性上: <EditText android:text="John Doe" android:layout_width="wrap_content" android:layout_height="wrap_content" />
當你發佈項目的時候,卻忘記了把該字符串給刪除了。 若是這裏麪包含有比較機密的內容的話,你的祕密就被泄露出去了。 你能夠用
tools:text="John Doe"
這樣在發佈的時候,這些內容會自動去掉。
設計時佈局屬性的限制: