TextView如何產(chǎn)生豐富的文本。
顯示文本
- <font>設(shè)置顏色和字體
- <big/> 設(shè)置大小號
- <small/> 設(shè)置小號
- <i/> <b/> 設(shè)置斜體,粗體
- <a/>鏈接地址
- <img/> 插入圖片
-
使用實例
String html = "<font color='red'>我愛android</font><br>";
html += "<font color='blue'><big><i>新的測試</i></big></font><p>";
html += "<big><a ;
CharSequence mychr = Html.fromHtml(html);
tv1.setText(Html.fromHtml(html));
tv1.setMovementMethod(LinkMovementMethod.getInstance()); //點擊的時候產(chǎn)生超鏈接。
String text = "我的url: http://www.sina.com\n";
text += "我的email: 123436059@qq.com\n";
text += "我的電話: 1868480621";
tv2.setText(text);
tv2.setMovementMethod(LinkMovementMethod.getInstance());
注意2個方法,一個是html格式的使用。Html.fromHtml(html)。
一個是產(chǎn)生超鏈接,必須要在textview里設(shè)置一個屬性 == android:autoLink="all" == 方能生效。
顯示表情和文本
顯示圖片的要點:
- 利用反射得到資源名
- imageget的使用
-
使用實例
public int getResoureId(String name) {
try {
//根據(jù)資源id的變量名獲得Field對象,使用反射機(jī)制來實現(xiàn)
Field field = R.drawable.class.getField(name);
//取得并返回資源的id的字段(靜態(tài)變量)
return Integer.parseInt(field.get(null).toString());
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
//------------------------------------
String html = "圖像1<img src='m10'/>圖像2<img src='m12'/>";
html += "圖像3<img src='m13'/><p>圖像4<a ><img src='m10'/></a>";
CharSequence text = Html.fromHtml(html, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
//獲得系統(tǒng)資源的信息。
if (getResoureId(source) == 0) {
Log.d("taxi", "erro");
return null;
}
Drawable drawable = getResources().getDrawable(getResoureId(source));
return drawable;
}
}, null);
tvIcion.setText(text);
tvIcion.setMovementMethod(LinkMovementMethod.getInstance());
關(guān)鍵是這2個方法的運(yùn)用。
textview跳轉(zhuǎn)activity(點擊局部跳轉(zhuǎn))
關(guān)鍵以下4點:
- SpannableString的使用
- SpannableString.setSpan
- ClickableSpan()
- setMovementMethod(LinkMovementMethod.getInstance())的使用
-
使用實例
SpannableString mystring1 = new SpannableString(text1);
SpannableString mystring2 = new SpannableString(text2);
mystring1.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(context, TestA_Activity.class));
}
}, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mystring2.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Log.d("taxi", "點擊了跳轉(zhuǎn)");
}
}, text2.indexOf("activity"), text2.indexOf("activity") + "activity".length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv1.setText(mystring1);
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv2.setText(mystring2);
tv2.setMovementMethod(LinkMovementMethod.getInstance());
點擊事件的獲取。
跑馬燈效果
在看代碼前,先講解一下等下會碰到的屬性:
android:elipsize: 如果文本長度大于TextView的顯示長度,則隱藏那一部分,可賦值為:none(不隱藏)、start(隱藏開始)、middle(隱藏中間)、end(隱藏結(jié)束)、marquee(滾動效果)。
android:marqueRepeatLimit:設(shè)定需要重復(fù)動畫的次數(shù),傳遞一個int值,-1為無限循環(huán)。
android:focusable:是否允許獲得焦點,傳遞一個bool值。
android:focusableInTouchMode:是否在獲得焦點時對控件有聯(lián)系,傳遞一個bool值。
關(guān)鍵的就是這幾個屬性。
==tv_anim.setMovementMethod(LinkMovementMethod.getInstance());在代碼中如果設(shè)置了這個屬性,也會使跑馬燈效果失效。==