今天在日常配置介面的時候,遇到了乙個問題
先上設計圖
本來看起來很簡單的乙個視覺圖,但是在配置的時候,確遇到了問題
因為字型使用的是dincondensed-bold這個樣式,而字型又比較大(36sp),如果textview配置成wrap_content
那麼設定在手機上的時候,右邊的數字會溢位去.
那麼有的朋友可能就會說了,你這個textview 設定成match_parent或者寫死它的長度不就可以了麼?或者給這個textview設定乙個右padding。
因為我這個數字右邊還有文字(「天」),所以無論寫死長度或者配置match_parent,都會很難看,達不到設計要求,設定右pading就更不行了。
那麼該怎麼解決呢?其實很簡單,大家都想到了,自定義乙個類,繼承textview,然後重寫onmeasure方法,就可以了,這裡只需要注意的一點,就是在計算textsize的時候,要注意獲取到的單位是px,而不是sp,獲取字串長度的時候,要注意把typeface設定到paint上去,就行了,好,廢話不多說,直接上**.
private context context;
public dinoldtextview(context context)
public dinoldtextview(context context, attributeset attrs)
public dinoldtextview(context context, attributeset attrs, int defstyleattr)
@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
newwidthmeasurespec = measurespec.makemeasurespec(wsize, wmode);
break;
}newheightmeasurespec = measurespec.makemeasurespec(hsize, hmode);
setmeasureddimension(newwidthmeasurespec, newheightmeasurespec);
}public int getlinelength(string str, float textsize)
}這裡我重新計算了字串的長度,並且加上了乙個預設值, r.dimen.magin_or_padding_lv_00 = 2dp;這樣就相當於,在原有的基礎上,把textview擴充套件了一點寬度,那麼這個數字既不會再溢位了,配置的時候也很簡單,只要把原有的textview,替換成這個
dinoldtextview,其他什麼都不用管,就行了.我們再看看改完的效果
這樣的話就大功告成了!
TextView設定字型樣式
packagecom.zhou.activity import importandroid.graphics.color importandroid.os.bundle importandroid.text.spannable importandroid.text.spannablestring i...
Android設定TextView字型
1.將字型檔案 例如hyliangpinxiancuj.ttf 放到assets目錄下 2.自定義multifonttextview繼承textview public class multifonttextview extends textview 初始化字型 param context priva...
TextView裡面設定字型加粗
在textview裡設定字型加粗分為兩種方法,一種是在 中動態新增,一種是在xml中靜態新增 動態新增分兩種方法 1 textview textview textview findviewbyid r.id.text view textpaint tp textview getpaint tp.se...