Smallest-width 限定符


很多开发者都想在这个范围内根据不同的具体屏幕尺寸来显示不同的布局(例如 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之前的还是之后的,满足尺寸要求的都会使用该布局。

你可能感兴趣的:(Smallest-width 限定符)