分享一個最近作業務遇到的簡單又蠻有意思的的文本顯示處理過程。具體就是有這麼一段文字,相似「轉盤抽獎得到跑車x1,點擊領取~」,用TextView顯示。java
「能夠」,而後加上了粗體屬性android:textStyle="bold"。android
<TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:textStyle="bold" android:textColor="#252525" android:textSize="19sp"/>複製代碼
不放截圖了,效果你知道的。ios
「OK」,由於變成了文字分段顯示成不一樣樣式了,因此我換用了span來處理。git
Spanny spanny = new Spanny("Underline text", new UnderlineSpan())
.append("\nBold text", new StyleSpan(Typeface.BOLD))
.append("\nPlain text");
textView.setText(spanny);複製代碼
這裏的Spanny是個很好用的Span工具類Spanny,能夠便捷地將span設置到String上,順便推薦一下。若是不用Spanny,效果本身按原生Api拼接也是同樣的。github
「@¥#%@@*&!微笑😊」
爲何會比iOS的粗,由於是系統字體不同的緣由,iOS 用的是Helvetica,安卓字體是Roboto,其字體自己就設計加粗效果就是這麼粗。就沒有辦法了嗎?有的。app
span+畫筆處理。 √ ide
//沒錯,就幾行代碼這麼簡單
public class FakeBoldSpan extends CharacterStyle {
@Override
public void updateDrawState(TextPaint tp) {
tp.setFakeBoldText(true);//一種僞粗體效果,比原字體加粗的效果弱一點
// tp.setStyle(Paint.Style.FILL_AND_STROKE);
// tp.setColor(Color.RED);//字體顏色
// tp.setStrokeWidth(10);//控制字體加粗的程度
}
}
//使用:
fakeBoldText.setText(new Spanny().append("FakeBold",new FakeBoldSpan()));複製代碼
如圖,依次是普通字體,加粗字體,比較纖細的那種粗——
工具
2017.07.31 更新,有評論問到中文加粗怎麼搞?
設置一下Span的畫筆:字體
tp.setStyle(Paint.Style.FILL_AND_STROKE);
tp.setColor(Color.RED);//字體顏色
tp.setStrokeWidth(10);//控制字體加粗的程度複製代碼
這裏控制的是字體加粗的程度。有空再寫個方便隨意控制粗細度的方法吧。spa