標籤:android官方文檔 官方文檔翻譯 android技術文檔 設計時布局屬性 tools 屬性
本文譯自androd官方技術文檔《Designtime Layout Attributes》:http://tools.android.com/tips/layout-designtime-attributes。
本文地址:http://blog.csdn.net/maosidiaoxian/article/details/41510581。轉載請註明出處。翻譯如有錯訛,敬請指正。
設計時布局屬性在 Android Studio 0.2.11 版本中,布局渲染(用於布局編輯器以及XML編輯器的版面配置預覽視窗),支援
設計時布局屬性.
這些屬性用於布局在工具裡渲染的時候,但是對運行時沒有任何影響。這一點很有用,比如如果你想在編輯布局的時候把
樣品資料放到文字框中,但又不些這些屬性影響到你的啟動並執行應用中。
若要使用設計時屬性,請首先確保您有在您的布局中定義工具命名空間:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
...
這個工具命名空間是Android的工具專門公認的命名空間,所以你定義在視圖元素上的所有的tool-namespace的屬性,在應用程式被打包時都將自動剝離並且不會對運行時帶來開銷。
然後,例如設定文字欄位的文本,使用與Android 架構中相同的屬性,但使用
tools: 命名空間而不是
android: 命名空間:
<TextView
android:text="Name:"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
tools:text="John Doe"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
在上面例子中,Name 標籤使用正常的文字屬性,它將在運行時顯示。不過,文字欄位使用設計時屬性,因此它在工具中出現,而不是在運行時。
一般情況下,你可以設定任何的Android 架構的屬性作為設計時屬性;只是使用
tools:命名空間而不是
android:命名空間。還要注意的是,你不必只選擇其中的一個;您可以設定
兩個屬性,Android 命名空間屬性(在運行時使用)和工具屬性(在設計時將覆蓋運行時屬性)。
您還可以使用設計時屬性在工具裡
刪除一個屬性的值。例如,有這樣一個bug(http://b.android.com/58448),你不能在布局編輯器裡對ListView使用
fastScrollAlwaysVisible屬性。但是,您可能仍然希望該屬性在運行時是設定的。通過設計時屬性,你可以這樣解決:
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fastScrollAlwaysVisible="true"
tools:fastScrollAlwaysVisible=""/>
下面是另一個例子;我們有一個有多個子view的FrameLayout,並且在設計時,我們只希望看到他們中的一個,比如說第二個:我們可以使用 tools:visibility 屬性:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First"
tools:visibility="invisible" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Second"
tools:visibility="visible" />(根據你的需要,你可能會使用
visibility="gone" 來代替
visibility="invisible" 。)限制
- 目前僅支援覆蓋現有的屬性。我們可能要定義一些額外的方便的屬性,使比如選擇在ViewFlipper 顯示的子view等等變得簡單
- 此時你必須手動編輯您的設計時屬性
- 它們不會作為一個選項出現,比如在布局編輯器屬性工作表中。
- 編輯器的程式碼完成功能不會協助你進入這些屬性;使用它們的最簡單的方法是先在Android命名空間中進入,然後進行更換首碼來完成。
- 需要注意的是設計時屬性僅支援布局檔案本身。你不能在其他地方使用它們——比如在菜單 XML 檔案中,字串資源定義中,等等。
- 在這一點上,設計時屬性只能用於架構資源中,而無法在自訂屬性使用。
- 查看 https://code.google.com/p/android/issues/detail?id=46186 以擷取背景資料、額外請求或注釋等資訊。
關於
tools: 命名空間的其他屬性的詳細資料,請參閱 Tools Attributes。
android官方技術文檔翻譯——設計時布局屬性