天天看點

UI元件——TextView

1 TextView直接繼承與View。

對每個控件都要關注:界面+ 事件。

界面是如何呈現的?

事件是如何實作的?

對每個控件做練習,并模仿商業app實作。

從最簡單和最常見的控件來

約定:

特殊元件,詳細講事件和原理。

普通元件,簡單講解用法。

2 TextView(文本框)

表1 TextView支援的XML屬性以及相關方法 參考資料: http://www.jb51.net/article/37535.htm http://www.cnblogs.com/over140/archive/2010/10/05/1844464.html http://www.cnblogs.com/over140/tag/Android%20API%20%E4%B8%AD%E6%96%87/ 《瘋狂Android(第3版本)》

TextView中XML屬性适用于TextView、Button和EditText。

XML屬性 相關方法 說明
android:autoLink setAutoLinkMask(int) 是否符合指定格式的文本轉換為可單擊的超連結形式。
android:linksClickable setLinksClickable(boolean) 設定連結是否點選連接配接,即使設定了autoLink。
android:autoText setKeyListener(KeyListener) 設定是否當文本為URL連結/email/電話号碼/map時,文本顯示為可點選的連結。可選值(none/web /email/phone/map/all)
android:capitalize setKeyListener(KeyListener)

是否将使用者輸入的文本轉換為大寫字母。

該屬性支援如下選項:

(1)none:不轉換。

(2)sentences:每個句子的首字母大寫。

(3)worlds:每個單詞的首字母大寫。

(4)characters:每個字母大寫。

EditView中使用。

android:cursorVisible setCursorVisible(boolean) 設定該文本框的光标是否可見
android:drawableTop setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的頂端出繪制指定圖像。
android:drawableBottom setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的底端出繪制指定圖像。android:drawableBottom在text的下方輸出一個drawable,如圖檔。如果指定一個顔色的話會把text的背景設為該顔色,并且同時和background使用時覆寫後者。
android:drawableLeft setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的左邊出繪制指定圖像。
android:drawableRight setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable,Drawable,Drawable) 在文本框内文本的右邊出繪制指定圖像。
android:drawableStart 在文本框内文本的開始處出繪制指定圖像。
android:drawableBottom 在文本框内文本的結尾處出繪制指定圖像。
android:drawablePadding setCompoundDrawablePadding(int) android:drawablePadding設定text與drawable(圖檔)的間隔,與drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可設定為負數,單獨使用沒有效果。
android:ellipsize

設定當文字過長時,該控件該如何顯示。

有如下值設定:

none:不做任何處理。

Start:省略号顯示在開頭;

end:省略号顯示在結尾;

middle:省略号顯示在中間;

marquee:以跑馬燈的方式顯示(動畫橫向移動)

android:marqueeRepeatLimit setMarqueeRepeatLimit(int) 設定marquee動畫重複的次數。在ellipsize指定marquee的情況下,設定重複滾動的次數,當設定為 marquee_forever時表示無限次。
android:editable 設定該文本是否允許編輯。
android:ems setEms(int) 設定該元件的寬度,以em為機關。這裡測試為一個漢字字元寬度
android:maxEms setMaxEms(int) 設定該文本框的最大寬度,以em為機關。
android:minEms setMinEms(int) 設定該文本框的最小寬度,以em為機關。
android:height setHeight(int) 設定該文本框的高度,以pixel為機關。
android:maxHeight setMaxHeight(int) 設定該文本框的最大高度,以pixel為機關。
android:minHeight setMinHeight(int) 設定該文本框的最小高度,以pixel為機關。
android:width setWidth(int) 設定該文本框的寬度,以pixel為機關。
android:maxWidth setMaxWidth(int) 設定該文本框的最大寬度,以pixel為機關。
android:minWidth setMinWidth(int) 設定該文本框的最小寬度,以pixel為機關。
android:lines setLines(int) 設定該文本框預設占幾行。設定兩行就顯示兩行,即使第二行沒有資料。
android:maxLines setMaxLines(int) 設定該文本框最多占幾行。超出部分不顯示。
android:minLines setMinLines(int) 設定該文本框最少占幾行。
android:singleLine setSingleLine(boolean) 設定該文本框是否為單行顯示模式。如果設定true,文本不會換行。
android:lineSpacingExtra setLineSpacing(float,float) 設定兩行文本之間的額外間距。與屬性android:lineSpacingMultiplier結合使用。
android:lineSpacingMultiplier setLineSpacing(float,float) 設定兩行文本之間的間距倍數。 如”1.2”。每行文本為高度*該屬性值 + android:lineSpacingExtra屬性值。
android:textAppearance

設定文本框文本的顔色、字型、大小等樣式。

如 “?android:attr/textAppearanceLargeInverse”這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。

可設定的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/

textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse

android:gravity setGravity(int) 設定文本框中文本的對齊方式。
android:text setText(ChartSeqence) 設定文本框中文本.
android:textAllCaps setTextAllCaps(boolean) 設定是否将文本框的所有字母顯示為大寫字母。
android:textColor setTextColor() 設定文本框中文本的顔色。
android:textSize setTextSize(float) 設定文本框中文本的字型大小,推薦度量機關”sp”,如”15sp”。
android:textColorHighlight setHighlightColor() 設定文本框中文本被選中時的顔色。預設為藍色
android:textColorLink setLinkTextColor() 設定文本框中文字連結的顔色.
android:textScaleX setTextScaleX(float) 設定文本框中文字在水準方向上的縮放因子。預設為1.0f。
android:textStyle setTypeface(Typeface) 設定文本框中文本的字型風格。[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設定一個或多個,用“|”隔開
android:typeface setTypeface(Typeface) 設定文本框中文本的字型。必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字型) 3]
android:textIsSelectable isTextIsSelectable() 設定文本框不能編輯時,文本框内的文字是否可以選中。
android:hint setHint(int) 設定當文本框内容為空時,文本框内預設提示的提示文本。EditText中輸入内容為空時,設定提示資訊。
android:textColorHint setHintTextColor 設定文本框中提示文本的顔色。預設為灰色。與hint一起使用。
android:maxLength 限制顯示的文本長度,超出部分不顯示。
android:shadowColor setShadowLayer(float,float,float,int) 設定文本框内文本的陰影顔色。需要與shadowRadius一起使用。
android:shadowDx setShadowLayer(float,float,float,int) 設定文本框内文本的陰影在水準方向(橫向坐标)的偏移。
android:shadowDy setShadowLayer(float,float,float,int) 設定文本框内文本的陰影在垂直方向(縱向坐标)的偏移。
shadowRadius setShadowLayer(float,float,float,int) 設定文本框内文本的陰影的模糊程式。該值越大,陰影越模糊。android:shadowRadius設定陰影的半徑。設定為0.1就變成字型的顔色了,一般設定為3.0的效果比較好。
android:digits設定允許輸入哪些字元。如“1234567890.+-*/% ()”
android:numeric setKeyListener(KeyListener)

設定文本框關聯的數值輸入法。

該屬性支援如下屬性值:

integer:執行關聯整數輸入法

signed:允許輸入符号的數值輸入法。

Decimal:允許輸入小數點的數值輸入法。

android:digits setKeyListener(KeyListener) 如果該屬性設定為true,該文本框對應一個數字輸入法,并且隻能接受那些合法字元。
android:password setTransformationMethod(TransformationMethod) 設定文本框是一個密碼框,以小點”.”顯示文本
android:phoneNumber setKeyListener(KeyListener) 設定文本框隻能接受電話号碼
android:imeOptions setImeOptions(int)

當為文本框關聯輸入法時,為輸入法指定額外的選項。

附加功能,設定右下角IME動作與編輯框相關的動作,如actionDone右下角将顯示一個“完成”,而不設定預設是一個回車符号。在EditView使用。

android:imeActionId setImeActionLabel(CharSequebnce,int) 當輸入框關聯輸入法時,為輸入法提供EditorInfo.actionId值。即設定IME動作ID。在EditView使用。
android:imeActionLabel setImeActionLabel(CharSequebnce,int) 當輸入框關聯輸入法時,為輸入法提供EditorInfo.actionLabel值。設定IME動作标簽。在EditView使用。
android:includeFontPadding setIncludeFontPadding(boolean) 設定是否為字型保留足夠的空間。即設定文本是否包含頂部和底部額外空白,預設為true。
android:inputMethod setKeyListener(KeyListener) 為文本框指定輸入法,需要全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這裡報錯找不到。
android:privateImeOptions setPrivateImeOptions(String) 設定文本框關聯輸入法的私有選項。在EditText中使用。
android:inputType setRawInputType(int) 設定文本框的類型,用于幫助輸入法顯示合适的鍵盤類型。在EditView使用。
android:fontFamily setTypeface(Typeface) 設定文本框内文本的字型。
android:scrollHorizontally setScrollHorizontally(boolean) 設定當文本框不夠顯示全部内容時是否允許水準滾動。即超出TextView的寬度的情況下,是否出現橫拉條。
android:selectAllOnFocus setSelectAllOnFocus(boolean) 當文問框的内容可選擇,設定是否當它獲得焦點時自動選中所有文本。 TextView中設定後無效果。在EditView使用。
android:bufferType指定getText()方式取得的文本類别。選項editable 類似于StringBuilder可追加字元,也就是說getText後可調用append方法設定文本内容。spannable 則可在給定的字元區域使用樣式,參見這裡1、這裡2。
android:editorExtras

setExtractedText(ExtractedText)

setInputExtras(int)

設定文本的額外的輸入資料。
android:freezesText setFreezesText(boolean) 設定儲存文本的内容以及光标的位置。

TextView是一個很複雜的控件,派生類很多。熟悉TextView,對自定義控件很有好處。

複雜的控件:TextView、ListView、GridView

示例程式:AndroidDemos/UI_Component_View_TextView