以.xml或以编程方式设置文本大小

Suv*_*ica 19 android dimensions

我在dimens.xml上有变量

<resources>
    <dimen name="btn_text_size">12sp</dimen>    
</resources>
Run Code Online (Sandbox Code Playgroud)

我可以在布局文件中使用它:

 <TextView
           android:textSize="@dimen/btn_text_size"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/dialog_tags_complete"
/>
Run Code Online (Sandbox Code Playgroud)

或以编程方式

tagButton.setTextSize(c.getResources().getDimension(R.dimen.tag_text_size));
Run Code Online (Sandbox Code Playgroud)

但是这两种方法给出了不同的结果.我知道这getDimension是基于与资源相关的当前DisplayMetrics.

但是我该怎样做才能使这2种方式看起来一样?

323*_*3go 36

setTextSize( float )期望缩放的像素值.那么,setTextSize( 12 )会给你想要的结果.但是,getDimension()getDimensionPixelSize()以像素为单位返回大小,因此您需要使用单位类型变体,setTextSize()如下所示:

setTextSize( TypedValue.COMPLEX_UNIT_PX, getDimensionPixelSize( R.dimen.tag_text_size ) );
Run Code Online (Sandbox Code Playgroud)