前言
想要實現主體文字突出顯示,前面是數值加粗,后面是單位符號,且底部對齊數值顯示的效果;但是不同TextView
字體大小排版后總是有些差別,無法底部對齊。百度一番后有重寫TextView
的,還有其它布局對齊等方法,效果並不好使。突然想起之前寫的SpannableStringBuilder
,其中AbsoluteSizeSpan
可實現同一個TextView
文字大小變化,而且底部是對齊的,於是就拿來使用。效果如下:
方法
主要是使用底部絕對尺寸AbsoluteSizeSpan
來使TextView
顯示內容分割后不同大小顯示,且使用ForegroundColorSpan
及StyleSpan
來達到不同顏色及加粗顯示,突出主題內容。
private void setBottomAlignment(TextItem item) {
SpannableStringBuilder spanString = new SpannableStringBuilder(item.getValue() + " " + item.getUnit());
//絕對尺寸
AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(60);
spanString.setSpan(absoluteSizeSpan, String.valueOf(item.getValue()).length(), spanString.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
// 字體顏色
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.GRAY);
spanString.setSpan(colorSpan, String.valueOf(item.getValue()).length(), spanString.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// 字體加粗
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
spanString.setSpan(styleSpan, 0, String.valueOf(item.getValue()).length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvNumberUnit.setText(spanString);
}
還有更多關於TextView
圖文顯示,分別設置點擊事件等有趣使用,請查看SpannableStringBuilder實現TextView華麗變身 。例子已上傳至Github開發記錄,歡迎點擊查閱及Star,我也會繼續補充其它有用的知識及例子在項目上。
歡迎點贊/評論,你們的贊同和鼓勵是我寫作的最大動力!
關注公眾號:幾圈年輪,查看更多有趣的技術、工具、閑言、資源。