Android TextView(一)——常用屬性簡介
阿新 • • 發佈:2019-01-25
TextView ——常用屬性簡介
1.
android:textStyle
設定字形[bold(粗體) 0, italic(斜體) 1,
bolditalic(又粗又斜) 2] 可以設定一個或多個,用“|”隔開
設定文字字型,必須是以下常量值之一:
normal 0,
sans 1,
serif 2,
monospace(等寬字型) 3]
2.
android:singleLine="true":
設定文字只顯示一行,未顯示的文字以 "..." 代替,不過該屬性以過期,可以設定一下屬性代替該效果。
android:maxLines="1" :設定最大顯示行數
3.
android:ellipsize="middle": 設定以“...”代替省略內容的位置
”start”—–省略號顯示在開頭;
”end”——省略號顯示在結尾;
”middle”—-省略號顯示在中間;
”marquee” ——以跑馬燈的方式顯示(動畫橫向移動)
4.
android:focusable=“true”:
設定是否獲得焦點。若有requestFocus()被呼叫時,後者優先處理。注意在表單中想設定某一個如EditText獲取焦點,光設定這個是不行的,
在Touch模式下獲取焦點需要設定focusableInTouchMode為true 。
5.
android:drawableBottom
在text的下方輸出一個drawable,
並且同時和background使用時覆蓋後者。
android:drawableLeft
在text的左邊輸出一個drawable,
android:drawablePadding
設定text與drawable(圖片)的間隔,與drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可設定為負數,單獨使用沒有效果。
android :drawableRight
在text的右邊輸出一個drawable,如圖片。
android:drawableTop
在text的正上方輸出一個drawable,
6.
android:scrollHorizontally="true"
設定文字滾動顯示
android:marqueeRepeatLimit: 設定滾動次數
8.
Android中設定陰影也比較簡單,xml中可以這樣設定:
android:shadowColor //指定文字陰影的顏色
android:shadowDx //設定陰影橫向座標開始位置
android:shadowDy //設定陰影縱向座標開始位置
android:shadowRadius //設定陰影的半徑。設定為0.1會變成字型的顏色
7.
android:autoLink:設定超連結
預設為none:
Linkify.WEB_URLS,
Linkify.EMAIL_ADDRESSES,
Linkify.PHONE_NUMBERS,
Linkify.MAP_ADDRESSES,Linkify.ALL
9.
android:bufferType
選項editable 類似於StringBuilder可追加字元,
也就是說getText後可呼叫append方法設定文字內容。
spannable 則可在給定的字元區域使用樣式,
10.
android:editable 設定是否可編輯。
11.
android:maxEms
設定TextView的寬度為最長為N個字元的寬度。與ems同時使用時覆蓋ems選項。
android:minEms
設定TextView的寬度為最短為N個字元的寬度。與ems同時使用時覆蓋ems選項。
android:maxLength
限制顯示的文字長度,超出部分不顯示。
12.
android:lineSpacingExtra 設定行間距。
android:lineSpacingMultiplier 設定行間距的倍數。如”1.2”
TextView應用
1.有時候有這樣的需求,TextView中個別字元是不確定的,例如,你好XX,歡迎使用我們的XX:App! 在執行時才確定,我們可以這樣做:
在string.xml資原始檔中定義要顯示的文字,對於不確定的字元用佔位符佔據,然後再替換掉:
//資原始檔中:
<string name="welcome">你好%1$s,歡迎使用我們的%2$s:App!</string>
//將striing 資原始檔中的佔位符代替掉
String welcome=getString(R.string.welcome,"小丸子","智慧"); textView.setText(welcome);
2.有時 TextView的文字我們需要部分字元有不同的樣式,而設定TextView 的樣式屬性都是對全部文字而言,這時我們就需要用到android.text 名稱空間下的一些與Spannable相關的類和介面
在Activity中首先建立一個Spannable介面的實現類:
其引數CharSequence ,String是它的子類,其實這裡也就是我們要設定 在TextView的文字內容
這裡要用到Span,各種的Span就是通過SpannableString來封裝樣的,設定完Span之後需要將Span放入到SpannableString類中,然後SpannableString設定到
TextView中去。
把Span放入到SpannableString用到這個方法:
spannableString.setSpan(Object what,int start,int end,int flags);
其引數:what 是Object型別 肯定是span物件,star就是我們要操作的文字的起始下標,end是結束的下標。
flag:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含start和end所在的端點 (star,end)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端點(star,end]
Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含start,但不包含end所在的端點 [star,end)
Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含start和end所在的端點 [star,end]
下面來看程式碼:
Spannable textSpan=new SpannableStringBuilder("使用該軟體,即表示您同意該軟體的使用條款和隱私政策");
// 給“使用條款”設定下劃線
textSpan.setSpan(new UnderlineSpan(), 16, 20,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 給“使用條款”設定文字的單擊事件
textSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(MainActivity.this, UsageActivity.class));
Log.d(TAG, "onClick: 使用條款被點選了!"); }
}, 16, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 給“使用條款”設定文字的前景色
textSpan.setSpan(new ForegroundColorSpan(Color.GREEN), 16, 20,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 給“隱私政策”設定下劃線
textSpan.setSpan(new UnderlineSpan(), 21, 25,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 給“隱私政策”設定文字的單擊事件
textSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(MainActivity.this, UsageActivity.class));
}
}, 21, 25, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 給“隱私政策”設定文字的前景色
textSpan.setSpan(new ForegroundColorSpan(Color.RED), 21, 25,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//SpannableString設定到 TextView中去。
textView2.setText(textSpan);
3. 插入圖片還可以用html字串來實現。不過需要用到ImageGetter類來對圖片的src屬性進行轉換:
String imgStr = "<b>大聖歸來</b><br><img src=\"" + R.mipmap.dasheng + "\"/>";
Html.ImageGetter imageGetter = new Html.ImageGetter(){
@Override
public Drawable getDrawable(String source) {
int id=Integer.parseInt(source);
Drawable drawable = getResources().getDrawable(id);
drawable .setBounds(100, 100, 300, 600);
return drawable ;
}
};
textView2.append(Html.fromHtml(imgStr,imageGetter,null));
4.// Android支援html格式的字串,
// 通過呼叫Html.fromHtml(str)方法可以轉換html格式的字串str。
String textStr1 = “如果有一天,“;
String textStr2 = “我悄然離去“;
textView2.setText(Html.fromHtml(textStr1 + textStr2));
// Android支援html格式的字串,
// 通過呼叫Html.fromHtml(str)方法可以轉換html格式的字串str。
String textStr1 = "<font color=\"#123569\">如果有一天,</font><br/>";
String textStr2 = "<font color=\"#00ff00\">我悄然離去</font>";
textView2.setText(Html.fromHtml(textStr1 + textStr2));