我在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。

但是我应该怎么做才能使这两种方式看起来相同?

最佳答案

setTextSize( float )需要缩放的像素值。因此,setTextSize( 12 )将为您提供所需的结果。但是,getDimension()getDimensionPixelSize()以像素为单位返回大小,因此您需要按如下所示使用setTextSize()的单位类型变体:

setTextSize( TypedValue.COMPLEX_UNIT_PX, getDimensionPixelSize( R.dimen.tag_text_size ) );

08-18 08:52