很多開發人員都想在這個範圍內根據不同的具體螢幕尺寸來顯示不同的布局(例如 5寸和7寸的裝置)。
在Android 3.2版本中引入 “Smallest-width”限定符就是為瞭解決這個問題的。
例如,普通的7寸平板的最小寬度是600dp,因此如果你希望你的程式在這種尺寸的螢幕上使用兩個視窗(小於該尺寸的螢幕使用一個視窗),
那麼您可以使用上面的兩個布局檔案,只要把xlarge 限定符替換為sw600dp 即可, 可以看出在3.2+版本中,對螢幕的限定更加詳細了。
只要最小螢幕寬度大於等於600dp的裝置都會使用layout-sw600dp/main.xml 這個兩個視窗布局,而小於該尺寸的裝置就用layout/main.xml 一個視窗的布局。
但是,這樣在3.2之前的版本沒法使用,因為他們不認識sw600dp 這個限定符,這樣您還是要同時使用xlarge 限定符。這樣您的res/layout-xlarge/main.xml 檔案和res/layout-sw600dp/main.xml 檔案的內容是一樣的。
上面看到的Smallest-width限定符只適用於3.2+的裝置,因此您還需要同時使用(small, normal,large and xlarge)這些限定符來讓您的程式運行在3.2之前的系統中。例如:如果你想設計一個介面,在手機中顯示一個視窗,而在7寸平板或者更大的裝置中顯示兩個視窗,您需要這些布局檔案:
res/layout/main.xml: 單個視窗布局
res/layout-xlarge: 兩個視窗布局
res/layout-sw600dp: 兩個視窗布局
面的兩個布局檔案是一樣的,一個是用於3.2+裝置的;一個用於之前的裝置的。
為了避免這種布局檔案的重複,並且維護起來也很麻煩,您可以使用別名檔案。例如您可以定義如下的布局檔案:
res/layout/main.xml , 單個視窗布局
res/layout/main_twopanes.xml , 兩個視窗布局
布局檔案內容:
res/values-xlarge/layout.xml
Xml代碼 收藏代碼
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
res/values-sw600dp/layout.xml
Xml代碼 收藏代碼
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
這兩個檔案內容是一樣的,但是他們實際上並沒有定義布局。他們僅僅設定了main 為main_twopanes 的一個別名。既然該布局檔案有xlarge 和 sw600dp 這兩個限定符,這樣不管系統的版本是3.2之前的還是之後的,滿足尺寸要求的都會使用該布局。