在動態給android的字體設置大小的時候,踩過一些坑,特地列出來提醒大家。 1、直接setTextSize(),裡面的單位是預設sp的。 2、 在自定義view的時候,會用到自定義屬性,獲取自定義的字體大小,如上面代碼所示。但是按照這種方式取出來的單位是px的,因此不能直接給setTextSize ...
在動態給android的字體設置大小的時候,踩過一些坑,特地列出來提醒大家。
1、直接setTextSize(),裡面的單位是預設sp的。
2、
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TopViewStyle);
textSize = typedArray.getDimension(R.styleable.TopViewStyle_textSize, TypedValue.applyDimension(TypedValue .COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.title_size), context.getResources().getDisplayMetrics()));
在自定義view的時候,會用到自定義屬性,獲取自定義的字體大小,如上面代碼所示。但是按照這種方式取出來的單位是px的,因此不能直接給setTextSize(),不然顯示的大小會發生很大的變化。
3、我們怎麼解決這個問題呢?
setTextSize(TypedValue.COMPLEX_UNIT_PX,18); //px setTextSize(TypedValue.COMPLEX_UNIT_SP,18); //sp setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);//dip
通過以上的方法指明單位,其實直接設置setTextSize(),參數就是預設TypedValue.COMPLEX_UNIT_SP,上面三行代碼最終的字體大小是一樣的,只是單位不同,都是18sp轉換過去的。
尊重勞動成果,裝載請標明出處http://www.cnblogs.com/tangZH/p/8298499.html