使用TypedArray設置控件大小注意問題

在編寫自定義控件的時候,由於我的控件全部採用的是代碼編寫界面,在通過TypeArray獲取文字大小的時候,界面顯示的與設置的明顯不一樣,具體的圖片演示我就不貼圖可以查看http://blog.csdn.net/yangzl2008/article/details/7879019?utm_source=tuicool&utm_medium=referral ,這個也是描述一樣的問題,但是沒有給出解決方法。


下面是我的基本配置

<dimen name="skin_blue_dialog_title_size">18sp</dimen>
float dialog_title_size = appearance.getDimension(attr, 18);
centerTitle.setTextSize(dialog_title_size);
通過界面查看基本上擴大了將近一倍,然後查看打印值也確實跟界面顯示的差不多,查看setTextSize源碼

 @android.view.RemotableViewMethod
    public void setTextSize(float size) {
        setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
    }
可以看到TypedValue.COMPLEX_UNIT_SP,也就是說size是sp類型的,而getDimension最後給出的是px,導致getDimension之後再setTextSize時size又再次乘了density最終導致顯示異常,所以在自定義佈局設置size的時候不能使用默認的setTextSize(int size)而應該採用

float dialog_title_size = appearance.getDimension(attr, 18);
centerTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, dialog_title_size);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章