Android dimens.xml中保存不带单位的数值

dimens.xml的一般用法

在dimens.xml中可以保存各种在UI布局时用到的尺寸,例如:

<dimen name="sizeA">18sp</dimen>
<dimen name="sizeB">5.5dp</dimen>
<dimen name="sizeC">10px</dimen>

在dimens.xml中配置的所有尺寸都必须带有单位,dimens.xml中支持的单位一共有6种。常用的单位有sp(scale-independent pixels),dp(density-independent pixels),px(pixels 像素),此外还支持 in (inches),mm (millimeters)和pt (points at 72 DPI)。 
要在xml中引用上述定义的dimens,可以使用@dimen/sizeA。 
要在代码中引用上述定义的dimens,可以使用getResources().getDimension(R.dimen.sizeB); 
但是在布局时会经常使用一些不带单位的常量数值,如在LinearLayout中设置各个children的weight值(android:layout_weight),在TextView中设置行间距倍数(android:lineSpacingMultiplier)。这些数值由于不带单位就不能通过如下直接定义的方式保存在dimens.xml中。

<dimen name="sizeD">18</dimen>
<dimen name="sizeE">5.5</dimen>

在dimens.xml中保存不带单位的数值

要在dimens.xml中保存不带单位的数值,可以用如下格式来定义。

< item name= "text_line_spacing" type= "dimen" format = "float" > 1.2 </ item >

在上述定义中,type=”dimen”属性表示定义的item的资源类型是dimen类型。除了可以使用”dimen”外,还可以使用color,string,style等类型,但由于其他类型都可以直接定义,且没有数值的约束,所以一般不需要通过这种方法来定义。format=”float”属性表示定义的数值类型是float类型。除了”float”类型外,还可以使用boolean,fraction,integer等类型。例如:

<item name="top_weight" type="dimen" format="integer">5</item>

要在xml中引用上述定义的dimens,可以使用@dimen/text_line_spacing。 
要在代码中引用上述定义的dimens,可以使用如下代码。

TypedValue outValue = new TypedValue();

getResources().getValue(R.dimen.text_line_spacing, outValue, true);

float value = outValue.getFloat();

注意:不能通过getResources().getDimension(R.dimen.text_line_spacing);方式来引用,如果用这种方式引用上述方法定义的dimens,编译时不会报错,但是运行时会抛出NotFoundException。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值