動態程式碼設定Textview的字型大小,引用Dimen資源
阿新 • • 發佈:2019-01-11
xml檔案設定Textview字型大小,可直接設定
正確的方式應該設定TypedValue為sp,然後引用Dimen檔案裡的想引用的sp數值,如果不設定TypedValue為sp,則文字顯示異常過大,應該是將sp轉換成了px導致的。有效方式:
或者可以試試將px轉換成sp的方式,不過此種方式還暫未測試。
android:textSize="@dimen/common_font_sw320dp_of_13"
但是通過動態程式碼設定時,通常會遇到引用Dimen檔案失效或者文字大小異常的狀況,例如下面這2種方式都不對
tvHaveStockAt.setTextSize(context.getResources().getDimension(R.dimen.common_sw320dp_of_8));
tvHaveStockAt.setTextSize(R.dimen.common_sw320dp_of_8);
正確的方式應該設定TypedValue為sp,然後引用Dimen檔案裡的想引用的sp數值,如果不設定TypedValue為sp,則文字顯示異常過大,應該是將sp轉換成了px導致的。有效方式:
tvHaveStockAt.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.common_font_sw320dp_of_9));
或者可以試試將px轉換成sp的方式,不過此種方式還暫未測試。
/** * 根據手機的解析度從 dp 的單位 轉成為 px(畫素) */ public int dipTopx(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根據手機的解析度從 px(畫素) 的單位 轉成為 dp */ public int pxTodip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }