1.使用 "wrap_content" 和 "match_parent"
使用 "wrap_content"
视图的高度和宽度会被设置成与内容搭配的最小值,而"match_parent"
(与api8之前的"fill_parent"相同
)使组件填充父布局。使用 "wrap_content"和
"match_parent"
代替写死的值,你的视图可以灵活调节,既可以根据的需要的大小调整,也可以填充可用的空间。
2.使用RelativeLayout
你可以使用嵌套LinearLayout与
"wrap_content"
、 "match_parent"
去构建复杂的布局。但是LinearLayout中的视图是简单的顺序排列的,不支持你在空间上的控制子视图的关系。如果你希望子图不只是在简单线性布局,一个好的解决方案是使用,它可以让你根据组件间的 空间关系设定布局。
3.使用大小限定
上面的方案有时并不能在每一个屏幕上提供最好的用户的体验,你可以通过给目标屏幕提供不同的布局来这解决这问题。使用 configuration
qualifiers可以让当前设备根据尺寸,选择相应的资源。
4.使用最小宽度限定
许多应用想要在比较大的屏幕上尺寸与其他尺寸的有所区别,可以是用"Smallest-width" (Android 3.2+)
5.使用备选布局
因为最小尺寸限定在android3.2才适用,因此还是要用到抽象的尺寸文件夹 (small, normal, large and xlarge) 来适配之前的版本。
-
res/layout/main.xml:
single-pane layout -
res/layout-large:
multi-pane layout
6.使用方向限定
有些布局可以很好的在横屏和竖屏展示,但是大多数的都需要对于横竖屏进行适配。
res/values-sw600dp-land/layouts.xml
:
res/values-sw600dp-port/layouts.xml
:
7.使用Nine-patch的图片
在使用图片时会出现压缩或者拉伸的效果,可以通过nine-patch图片解决,它是通过格式化的png图片标识那一部分可以或不可拉伸实现适配。详见(http://blog.csdn.net/actsai/article/details/16947953)