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