1. 程式人生 > >android官方技術文件翻譯——設計時佈局屬性

android官方技術文件翻譯——設計時佈局屬性

在 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(,你不能在佈局編輯器裡對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 檔案中,字串資源定義中,等等。
  • 在這一點上,設計時屬性只能用於框架資源中,而無法在自定義屬性使用。
關於 tools: 名稱空間的其他屬性的詳細資訊,請參閱 Tools Attributes