字符串資源里變量替換
<string>你好%1$s,歡迎使用我們的App。</string
String welcome = getString(R.string.welcome, "小丸子");```
##**TextView xml文件可配置的屬性**
> android:autoLink 設(shè)置是否當(dāng)文本為URL鏈接/email/電話號(hào)碼/map時(shí),文本顯示為可點(diǎn)擊的鏈接。可選值(none/web/email/phone/map/all)
android:autoText 如果設(shè)置,將自動(dòng)執(zhí)行輸入值的拼寫糾正。此處無效果,在顯示輸入法并輸入的時(shí)候起作用。 android:bufferType 指定getText()方式取得的文本類別。選項(xiàng)editable 類似于StringBuilder可追加字符, 也就是說getText后可調(diào)用append方法設(shè)置文本內(nèi)容。spannable 則可在給定的字符區(qū)域使用樣式,參見這里1、這里2。 android:capitalize 設(shè)置英文字母大寫類型。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明。 android:cursorVisible 設(shè)定光標(biāo)為顯示/隱藏,默認(rèn)顯示。 android:digits 設(shè)置允許輸入哪些字符。如“1234567890.+-*/%\n()” android:drawableBottom 在text的下方輸出一個(gè)drawable,如圖片。如果指定一個(gè)顏色的話會(huì)把text的背景設(shè)為該顏色,并且同時(shí)和background使用時(shí)覆蓋后者。 android:drawableLeft 在text的左邊輸出一個(gè)drawable,如圖片。 android:drawablePadding 設(shè)置text與drawable(圖片)的間隔,與drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可設(shè)置為負(fù)數(shù),單獨(dú)使用沒有效果。 android:drawableRight 在text的右邊輸出一個(gè)drawable,如圖片。 android:drawableTop 在text的正上方輸出一個(gè)drawable,如圖片。 android:editable 設(shè)置是否可編輯。這里無效果,參見EditView。 android:editorExtras 設(shè)置文本的額外的輸入數(shù)據(jù)。在EditView再討論。 android:ellipsize 設(shè)置當(dāng)文字過長(zhǎng)時(shí),該控件該如何顯示。有如下值設(shè)置:”start”—–省略號(hào)顯示在開頭;”end”——省略號(hào)顯示在結(jié)尾;”middle”—-省略號(hào)顯示在中間;”marquee” ——以跑馬燈的方式顯示(動(dòng)畫橫向移動(dòng)) android:freezesText 設(shè)置保存文本的內(nèi)容以及光標(biāo)的位置。參見:這里。 android:gravity 設(shè)置文本位置,如設(shè)置成“center”,文本將居中顯示。 android:hint Text為空時(shí)顯示的文字提示信息,可通過textColorHint設(shè)置提示信息的顏色。此屬性在EditView中使用,但是這里也可以用。 android:imeOptions 附加功能,設(shè)置右下角IME動(dòng)作與編輯框相關(guān)的動(dòng)作,如actionDone右下角將顯示一個(gè)“完成”,而不設(shè)置默認(rèn)是一個(gè)回車符號(hào)。這個(gè)在EditView中再詳細(xì)說明,此處無用。 android:imeActionId 設(shè)置IME動(dòng)作ID。在EditView再做說明,可以先看這篇帖子:這里。 android:imeActionLabel 設(shè)置IME動(dòng)作標(biāo)簽。在EditView再做說明。 android:includeFontPadding 設(shè)置文本是否包含頂部和底部額外空白,默認(rèn)為true。 android:inputMethod 為文本指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這里報(bào)錯(cuò)找不到。 android:inputType 設(shè)置文本的類型,用于幫助輸入法顯示合適的鍵盤類型。在EditView中再詳細(xì)說明,這里無效果。 android:marqueeRepeatLimit 在ellipsize指定marquee的情況下,設(shè)置重復(fù)滾動(dòng)的次數(shù),當(dāng)設(shè)置為marquee_forever時(shí)表示無限次。 android:ems 設(shè)置TextView的寬度為N個(gè)字符的寬度。這里測(cè)試為一個(gè)漢字字符寬度,如圖: android:maxEms 設(shè)置TextView的寬度為最長(zhǎng)為N個(gè)字符的寬度。與ems同時(shí)使用時(shí)覆蓋ems選項(xiàng)。 android:minEms 設(shè)置TextView的寬度為最短為N個(gè)字符的寬度。與ems同時(shí)使用時(shí)覆蓋ems選項(xiàng)。 android:maxLength 限制顯示的文本長(zhǎng)度,超出部分不顯示。 android:lines 設(shè)置文本的行數(shù),設(shè)置兩行就顯示兩行,即使第二行沒有數(shù)據(jù)。 android:maxLines 設(shè)置文本的最大顯示行數(shù),與width或者layout_width結(jié)合使用,超出部分自動(dòng)換行,超出行數(shù)將不顯示。 android:minLines 設(shè)置文本的最小行數(shù),與lines類似。 android:linksClickable 設(shè)置鏈接是否點(diǎn)擊連接,即使設(shè)置了autoLink。 android:lineSpacingExtra 設(shè)置行間距。 android:lineSpacingMultiplier 設(shè)置行間距的倍數(shù)。如”1.2” android:numeric 如果被設(shè)置,該TextView有一個(gè)數(shù)字輸入法。此處無用,設(shè)置后唯一效果是TextView有點(diǎn)擊效果,此屬性在EdtiView將詳細(xì)說明。 android:password 以小點(diǎn)”.”顯示文本 android:phoneNumber 設(shè)置為電話號(hào)碼的輸入方式。 android:privateImeOptions 設(shè)置輸入法選項(xiàng),此處無用,在EditText將進(jìn)一步討論。 android:scrollHorizontally 設(shè)置文本超出TextView的寬度的情況下,是否出現(xiàn)橫拉條。 android:selectAllOnFocus 如果文本是可選擇的,讓他獲取焦點(diǎn)而不是將光標(biāo)移動(dòng)為文本的開始位置或者末尾位置。TextView中設(shè)置后無效果。 android:shadowColor 指定文本陰影的顏色,需要與shadowRadius一起使用。效果: android:shadowDx 設(shè)置陰影橫向坐標(biāo)開始位置。 android:shadowDy 設(shè)置陰影縱向坐標(biāo)開始位置。 android:shadowRadius 設(shè)置陰影的半徑。設(shè)置為0.1就變成字體的顏色了,一般設(shè)置為3.0的效果比較好。 android:singleLine 設(shè)置單行顯示。如果和layout_width一起使用,當(dāng)文本不能全部顯示時(shí),后面用“…”來表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"將只顯示“t…”。如果不設(shè)置singleLine或者設(shè)置為false,文本將自動(dòng)換行 android:text 設(shè)置顯示文本. android:textAppearance 設(shè)置文字外觀。如“?android:attr/textAppearanceLargeInverse ”這里引用的是系統(tǒng)自帶的一個(gè)外觀,?表示系統(tǒng)是否有這種外觀,否則使用默認(rèn)的外觀。可設(shè)置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse android:textColor 設(shè)置文本顏色 android:textColorHighlight 被選中文字的底色,默認(rèn)為藍(lán)色 android:textColorHint 設(shè)置提示信息文字的顏色,默認(rèn)為灰色。與hint一起使用。 android:textColorLink 文字鏈接的顏色. android:textScaleX 設(shè)置文字之間間隔,默認(rèn)為1.0f。分別設(shè)置0.5f/1.0f/1.5f/2.0f效果如下: android:textSize 設(shè)置文字大小,推薦度量單位”sp”,如”15sp” android:textStyle 設(shè)置字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設(shè)置一個(gè)或多個(gè),用“|”隔開 android:typeface 設(shè)置文本字體,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字體) 3] android:height 設(shè)置文本區(qū)域的高度,支持度量單位:px(像素)/dp/sp/in/mm(毫米) android:maxHeight 設(shè)置文本區(qū)域的最大高度 android:minHeight 設(shè)置文本區(qū)域的最小高度 android:width 設(shè)置文本區(qū)域的寬度,支持度量單位:px(像素)/dp/sp/in/mm(毫米),與layout_width的區(qū)別看這里。 android:maxWidth 設(shè)置文本區(qū)域的最大寬度 android:minWidth 設(shè)置文本區(qū)域的最小寬度
##**TextView中設(shè)置多種字體大小**
String text = "您已經(jīng)連續(xù)走了5963步";
int start = text.indexOf('5');
int end = text.length();
Spannable textSpan = new SpannableStringBuilder(text);
textSpan.setSpan(new AbsoluteSizeSpan(16),0,start,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textSpan.setSpan(new AbsoluteSizeSpan(26), start, end - 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textSpan.setSpan(new AbsoluteSizeSpan(16), end - 1, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);TextView textView = (TextView) findViewById(R.id.text);textView.setText(textSpan);```
TextView中設(shè)置超鏈接
android:autoLink
代碼中的設(shè)置方式:setAutoLinkMask(int)。
參數(shù):Linkify.WEB_URLS,
Linkify.EMAIL_ADDRESSES,
Linkify.PHONE_NUMBERS,
Linkify.MAP_ADDRESSES,
Linkify.ALL
//將TextView的顯示文字設(shè)置為
SpannableStringtestText.setText(getClickableSpan());//設(shè)置該句使文本的超連接起作用
testText.setMovementMethod(LinkMovementMethod.getInstance());//設(shè)置超鏈接文字private SpannableString getClickableSpan() { SpannableString spanStr = new SpannableString("使用該軟件,即表示您同意該軟件的使用條款和隱私政策"); //設(shè)置下劃線文字 spanStr.setSpan(new UnderlineSpan(), 16, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置文字的單擊事件 spanStr.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { startActivity(new Intent(MainActivity.this, UsageActivity.class)); } }, 16, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置文字的前景色 spanStr.setSpan(new ForegroundColorSpan(Color.GREEN), 16, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置下劃線文字 spanStr.setSpan(new UnderlineSpan(), 21, 25, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置文字的單擊事件 spanStr.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { startActivity(new Intent(MainActivity.this, PrivacyActivity.class)); } }, 21, 25, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //設(shè)置文字的前景色 spanStr.setSpan(new ForegroundColorSpan(Color.GREEN), 21, 25, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return spanStr;}
插入圖片
代碼中的設(shè)置方式:
setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)。
left,top等需傳入資源id,不需要的話傳0
陰影
android:shadowDx="15.0"
android:shadowDy="5.0"
android:shadowRadius="2.5"```
代碼中通過方法public void setShadowLayer (float radius, float dx, float dy, int color)來設(shè)置。
##**字體加粗或者傾斜**
android:textStyle=”bold”
tv.getPaint().setFakeBoldText(true);```
文字過長(zhǎng)顯示省略號(hào)或者跑馬燈效果
android:maxEms="6" //限制顯示的字符長(zhǎng)度
android:singleLine="true" //單行顯示
android:ellipsize="end"http://在結(jié)尾用省略號(hào)```
android:ellipsize設(shè)置當(dāng)文字過長(zhǎng)時(shí),該控件該如何顯示。有如下值設(shè)置:
”start”—–省略號(hào)顯示在開頭;
”end”——省略號(hào)顯示在結(jié)尾;
”middle”—-省略號(hào)顯示在中間;
”marquee” ——以跑馬燈的方式顯示(動(dòng)畫橫向移動(dòng))
android:marqueeRepeatLimit 在ellipsize指定marquee的情況下,設(shè)置重復(fù)滾動(dòng)的次數(shù),當(dāng)設(shè)置為marquee_forever時(shí)表示無限次。實(shí)現(xiàn)需要控件獲得焦點(diǎn)。
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee"
android:singleLine="true"
android:focusableInTouchMode="true"
android:focusable="true"```
設(shè)置行間距
1、android:lineSpacingExtra 設(shè)置行間距,如”3dp”。
2、android:lineSpacingMultiplier 設(shè)置行間距的倍數(shù),如”1.2″。
關(guān)于字體
我們可以通過設(shè)置android:typeface屬性來控制字體,可以設(shè)置為normal, sans, serif, monospace四種.
代碼中可以通過setTypeface(Typeface)方法設(shè)置。特殊的字體:
Typeface mTypeFace = Typeface.createFromAsset(getAssets(), "kaiti.ttf");
textview.setTypeface(mTypeFace);```
將字體文件放到assets文件夾下。
**但是需要注意的是,不要大量使用這種自定義字體,因?yàn)樽远x字體會(huì)消耗更多的性能**
##**TextView支持的部分Html標(biāo)簽**
<a href="..."> //定義鏈接內(nèi)容
<b> //定義粗體文字 b 是blod的縮寫
<big> //定義大字體的文字
<blockquote> //引用塊標(biāo)簽
//定義換行
<cite> //表示引用的URI
<dfn> //定義標(biāo)簽 dfn 是defining instance的縮寫
<div align="...">
<em> //強(qiáng)調(diào)標(biāo)簽 em 是emphasis的縮寫
<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i> //定義斜體文字
<p> // 段落標(biāo)簽,里面可以加入文字,列表,表格等
<small> //定義小字體的文字
<strike> // 定義刪除線樣式的文字 不符合標(biāo)準(zhǔn)網(wǎng)頁設(shè)計(jì)的理念,不贊成使用. strike是strikethrough的縮寫
<strong> //重點(diǎn)強(qiáng)調(diào)標(biāo)簽
//下標(biāo)標(biāo)簽 sub 是subscript的縮寫
//上標(biāo)標(biāo)簽 sup 是superscript的縮寫
<tt> //定義monospaced字體的文字 不贊成使用. 此標(biāo)簽對(duì)中文沒意義 tt是teletype or monospaced text style的意思
<u> //定義帶有下劃線的文字 u是underlined text style的意思```
顯示多種顏色的字
Android支持html格式的字符串,通過調(diào)用Html.fromHtml(str)方法可以轉(zhuǎn)換html格式的字符串str。示例代碼如下:
TextView textth = (TextView) findViewById(R.id.textth);
String textStr1 = "<font color="\"#123569\"">如果有一天,</font>";
String textStr2 = "<font color="\"#00ff00\"">我悄然離去</font>";
textth.setText(Html.fromHtml(textStr1 + textStr2));```
##**字體加粗**
字體加粗還可以通過設(shè)置html格式字符串來實(shí)現(xiàn)
String textStr1 = "<b>sdfa</b>";
textth.setText(Html.fromHtml(textStr1));```
插入圖片
插入圖片還可以用html字符串來實(shí)現(xiàn)。不過需要用到ImageGetter類來對(duì)圖片的src屬性進(jìn)行轉(zhuǎn)換。
代碼如下:
String imgStr = "<b>sdfa</b><br>";
Html.ImageGetter imageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
int id = Integer.parseInt(source);
Drawable draw = getResources().getDrawable(id); draw.setBounds(0, 0, 300, 200); return draw; } };
TextView textfi = (TextView) findViewById(R.id.textfiv);
textfi.append(Html.fromHtml(imgStr, imageGetter, null));```