【发布时间】:2013-10-30 02:02:17
【问题描述】:
我在dimens.xml 有变量
<resources>
<dimen name="btn_text_size">12sp</dimen>
</resources>
我可以在布局文件中使用它:
<TextView
android:textSize="@dimen/btn_text_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dialog_tags_complete"
/>
或以编程方式
tagButton.setTextSize(c.getResources().getDimension(R.dimen.tag_text_size));
但这两种方法给出了不同的结果。我知道getDimension 基于与资源关联的当前 DisplayMetrics。
但是我应该怎么做才能让这两种方式看起来一样呢?
【问题讨论】:
-
使用
getDimensionPixelSize()。 -
@323go 我在我的 HTC One S 上进行了测试。getDimensionPixelSize() 和 getDimension() 之间没有区别 =/
-
您确实意识到
sp= 缩放像素,它将根据屏幕指标和文本缩放因子进行调整,对吧?如果你想让它们看起来一样,你需要使用dp。 -
@323go 为什么相同的维度如果以编程方式设置(与 .xml 设置相比)看起来会不同?
-
因为您使用了错误的
setTextSize()方法。您正在使用的那个需要缩放像素,而您正在提供像素。改为这样做:setTextSize( TypedValue.COMPLEX_UNIT_PX, getDimensionPixelSize( R.dimen.tag_text_size ) );
标签: android dimensions