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

本文详细解释了在Android开发中如何正确使用SP单位来确保文本大小在不同屏幕密度下的显示一致性。介绍了通过getDimension()获取尺寸并转换为像素的方法,以及setTextSize()设置文本大小时的注意事项。

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

When you define a dimension in a resource file you include themeasurement unit. If you use sp units they are scaled according tothe screen density so text at 15sp should appear roughly the samesize on screens of differing density. (The real screen density ofthe device isn't going to exactly match as Android generalisesscreen density into 120, 160, 240 and 320 dpi groups.)

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

Calling setText(float) sets the size in sp units. This is where theissue is ie you have pixels measurements on one hand and sp unit onthe 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 nonfractional value.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值