轉載請註明出處:http://blog.csdn.net/llew2011/article/details/34122229 搞軟件開發的都知道項目中各類需求都有,而有時候各類奇葩的需求真是讓人大跌眼鏡,爲了實現這些奇葩的需求咱們每每苦逼的廢寢忘食,我如今的項目中就有一個應該算得上奇葩的需求吧,需求是這樣的:在一段文字中實現對部分文字加粗 這個看上去也不難而且有點小兒科,由於TextView中有個屬性是Android:textStyle,它其中一個值是bold,也就是說是對將要顯示的文字進行加粗,因而我就在TextView控件中添加了此屬性,代碼以下: [html] view plain copy 在CODE上查看代碼片派生到個人代碼片 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dip" android:gravity="center" android:text="中文加粗了麼?Chiness is bolded ?" android:textColor="#000000" android:textStyle="bold" android:textSize="18sp" />
運行程序測試了一下效果,很遺憾的是對英文和數字是能夠加粗的,可是對中文就沒有效果了。而後又想到到使用Android中自帶的Html.fromHtml方法(我以前是搞J2EE開發的,對Web仍是比較熟悉的,呵呵),由於在web開發中利用strong標籤或者是b標籤能夠實現對文字的加粗效果,而後我就在TextView的setText()方法中使用Html.fromHtml方法,運行以後發現並無出現加粗效果,又嘗試了從新安裝APK測試一下依然沒有實現我想要的中文加粗效果,隨後就上網詢問百度。 在網上查看了其餘的對中文加粗的實現,除了使用android:textStyle方法外就是經過TextView的TextPaint對象,調用TextPaint對象的setFakeBoldText(true),能夠實現對文字加粗的效果,我就嘗試了一下,代碼以下: [java] view plain copy 在CODE上查看代碼片派生到個人代碼片 title = (TextView) findViewById(R.id.title);
title.getPaint().setFakeBoldText(true);
這樣就能夠實現對中文和英文的同時加粗,實現了需求上說的對文字加粗的效果,可是問題來了,我須要實現的對文字加粗是在一段話中對部分文字而不是所有文字都須要加粗,這樣問題就來了,雖然能夠經過上述方法實現中文的加粗可是把全部的文字都加粗了,爲了實現部分文字加粗,我幸苦的把須要加粗的文字使用單獨的TextView實現,不須要加粗的就使用另一個TextView,這樣基本上實現了需求所要的效果。 雖然實現了效果,但是這個問題仍是在我內心留着,後來在無心中看一個控件源碼時發現了它的註釋裏有個加粗的效果使用的是<tt>標籤,我立馬來了興趣就在內心想可能這個標籤能夠實現對文字的部分加粗,因而就趕忙測試一下,代碼以下: [java] view plain copy 在CODE上查看代碼片派生到個人代碼片 title = (TextView) findViewById(R.id.title);
title.setText(Html.fromHtml("<b>China中國<tt>中國</tt></b>China真偉大!"));
運行了一下程序,果真有效果,而且是實現的在一個TextView中對部分文字實現了加粗,呵呵,內心高興壞了,因而趕忙記錄下來,給從此有須要的童鞋留個方便吧 總結一下加粗方式: 對英文加粗 XML代碼 android:textStyle="bold" 對中文加粗 Java代碼 TextView textView = (TextView) findViewById(R.id.textview); textView.getPaint().setFakeBoldText(true); 對部分文字加粗 Java代碼 TextView textView = (TextView) findViewById(R.id.textview); textView.setText(Html.fromHtml("不須要加粗的文字<b><tt>須要加粗的文字</tt></b>"));html
詳細代碼請見:http://blog.csdn.net/llew2011/article/details/31403969java