第八章:使用布局与组件创建用户界面
8.4 深入探讨XML布局属性:
8.4.1 样式、主题及主题属性:
样式style是XML资源文件,含有用来描述组件行为和外观的属性定义。
例如,下列样式资源能够配置组件,让其显示的文字大小大于正常值:
<style name=“BigTextStyle”>
<item name=“android:textSize”>20sp</item>
<item name=“android:padding”>3dp</item>
</style>
我们可以创建自己的样式文件,保存在res/values/目录下即可,然后在布局文件中以@style/my_own_style样式引用。
style=“?android:listSeparatorTextViewStyle”就是使用了系统主题属性的引用。(就是告诉Android运行资源管理器:在应用主题里找到名为listSeparatorTextViewStyle的属性。
8.4.2 dp、sp以及屏幕像素密度
最常见的属性有:
1、文字大小(text size),指定设备上显示的文字像素高度;
2、边距(margin),指定视图组件间的距离
3、内边距(padding),指定视图外边框与其内容间的距离
Android提供了密度无关的尺寸单位,使用这些单位,可在不同屏幕密度的设备上获得相同的尺寸。无需进行麻烦的转换计算,应用运行时,Android会自动将这种单位转换成像素单位。
dp:密度无关像素,无论屏幕密度如何,总能获得相同的尺寸。
sp:缩放无关像素,这种像素会受用户字体偏好设置的影响。通常我们会使用sp来设置屏幕上的字体大小
pt、mm、in:不建议使用,并非所有设备都能按照这些单位进行正确的尺寸缩放配置。
8.4.4 布局参数:
以layout_开头的属性作用于组件的父组件,我们将这些属性统称为布局参数,他们会告诉父布局如何在内部安排自己的子元素。
8.4.5 边距与内边距(margin与padding)
8.5 使用图形布局工具。
我们使用Design标签页打开fragment_crime.xml文件。
8.5.6 layout_weight属性的工作原理 两个组件设置了同样的值,但这并不意味着他们在屏幕上占据相同的宽度。LinearLayout依据layout_weight属性值进行额外的空间分配。如果weight相同,则他们均分了同样大小的额外空间(而不是尺寸相同)
如果想平均分配,则把layout_width设置为0dp即可。
如果一个组件只存在于一个布局上,则应先在代码中进行空值检查:
Button lanscapeOnlyButton = (Button)v.findViewById(R.id.landscapeOnlyButton);
if (landscapeOnlyButton != null) {
// set it up
}
注意:定义在水平或竖直布局文件中的同一组件必须具有同样的android:id属性。
网友评论