TextView 設定其他字型後,顯示不全的問題

2021-09-10 05:51:58 字數 1568 閱讀 2269

今天在日常配置介面的時候,遇到了乙個問題

先上設計圖

本來看起來很簡單的乙個視覺圖,但是在配置的時候,確遇到了問題

因為字型使用的是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...