9.2Android编程权威指南(第3版)————布局属性

本文深入解析Android中的dp、sp、px等尺寸单位,探讨它们在不同屏幕密度下的表现,以及如何利用这些单位实现UI元素的自适应布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dp、sp 以及屏幕像素密度
有时需要为视图属性指定大小尺寸值(通常以像素为单位,有时也用点、毫米或英寸)。一些常见的属性包括文字大小(text size)、边距(margin)以及内边距(padding)。文字大小指定设备上显示的文字像素高度;边距指定视图组件间的距离;内边距指定视图外边框与其内容间的距离。在各个带屏幕密度修饰的drawable(如drawable-xhdpi)下准备了对应的图片文件,Android会用它们自动适配不同像素密度的屏幕。那么问题来了,假如图片能自动适配,但边距无法缩放适配,或者用户配置了大于默认值的文字大小,会发生什么情况呢?
为解决这些问题,Android提供了与密度无关的尺寸单位。运用这种单位,可在不同屏幕像素密度的设备上获得同样的尺寸。无需麻烦的转换计算,应用运行时,Android会自动将这种单位转换成像素单位
在这里插入图片描述
px
英文pixel的缩写,即像素。无论屏幕密度多少,一个像素单位对应一个屏幕像素单位。不推荐使用px,因为它不会根据屏幕密度自动缩放。
dp(或dip)
英文density-independent pixel的缩写,意为密度无关像素。在设置边距、内边距或任何不打算按像素值指定尺寸的情况下,通常都使用dp这种单位。如果屏幕密度较高,密度无关像素会相应扩展至整个屏幕。1dp在设备屏幕上总是等于1/160英寸。使用dp的好处是,无论屏幕密度如何,总能获得同样的尺寸。
sp
英文scale-independent pixel的缩写,意为缩放无关像素。它是一种与密度无关的像素,这种像素会受用户字体偏好设置的影响。通常使用sp来设置屏幕上的字体大小。
pt、mm、in
类似于dp的缩放单位,允许以点(1/72英寸)、毫米或英寸为单位指定用户界面尺寸。但在实际开发中不建议使用这些单位,因为并非所有设备都能按照这些单位进行正确的尺寸缩放配置。

边距与内边距
边距属性是布局参数,决定了组件间的距离。由于组件对外界一无所知,因此边距必须由该组件的父组件负责。
内边距不是布局参数。属性android:padding告诉组件:在绘制组件自身时,要比所含内容大多少

样式、主题及主题属性
样式(style)是XML资源文件,含有用来描述组件行为和外观的属性定义。例如,使用下列
样式配置组件,就能显示比正常大小更大的文字:

你可以创建自己的样式文件。具体做法是将属性定义添加并保存在
res/values/目录下的样式文件中,然后在布局文件中以@style/my_own_style(样式文件名)的形式引用。从结构上来说,主题本身也是一种样式资源,只不过它的属性指向了其他样式资源。
Android自带了一些供应用使用的平台主题。例如,在创建CriminalIntent应用时,向导就设置了默认主题(是在manifest文件的application标签下引用的)。使用主题属性引用,可将预定义的应用主题样式添加给指定组件。使用主题属性引用,就是告诉Android运行资源管理器:“在应用主题里找到名为xxx的属性。该属性指向其他样式资源,请将其资源的值放在这里。”所有Android主题都包括名为xxx的属性。不过,基于特定主题的整体风格,它们的定义稍有不同。使用主题属性引用,可以确保TextView组件在应用中拥有正确一致的显示风格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值