程序中使用dimension中定义的尺寸大小不对的原因

程序中使用dimension中定义的尺寸大小不对的原因 (2013-02-26 09:18:26)转载▼
When you define a dimension in a resource file you include the measurement unit. If you use sp units they are scaled according to the screen density so text at 15sp should appear roughly the same size on screens of differing density. (The real screen density of the device isn't going to exactly match as Android generalises screen density into 120, 160, 240 and 320 dpi groups.)

When calling getResources().getDimension(R.dimen.textsize) it will return the size in pixels. If using sp it will scaled by the screen density,

Calling setText(float) sets the size in sp units. This is where the issue is ie you have pixels measurements on one hand and sp unit on the other to fix do this:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));
Note you can also use

getResources().getDimensionPixelSize(R.dimen.textSize);
instead of getDimension() and it will round and convert to an non fractional value.
dimen 必须设置 px
<dimen name="listview_largetextsize">18px</dimen>
<dimen name="listview_smalltextsize">14px</dimen>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值