1. 程式人生 > >Android文字輸入框EditText方法說明和屬性

Android文字輸入框EditText方法說明和屬性

1、EditText輸入的文字為密碼形式的設定

(1)通過.xml裡設定:

 把該EditText設為:android:password="true" // 以”.”形式顯示文字

(2)在程式碼裡設定:

通過設定EditText的setTransformationMethod()方法來實現隱藏密碼或這顯示密碼。

editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//設定密碼為不可見。

2、(1)EditText輸入的文字為電話號碼

Android:phoneNumber=”true”  //輸入電話號碼

3、EditText字數限制的設定

(1)在.xml中設定:android:maxLength=“50” 

(2)程式碼中設定:   

editText.setFilters(new InputFilter[]{newInputFilter.LengthFilter(100)});

4、EditText設定字型

android:typeface="monospace" //設定字型。字形有:normal, sans, serif,monospace

5、EditText是否可編輯

Android:editable // 是否可編輯

6、在EditText中軟鍵盤的調起、關閉

(1)EditText有焦點(focusable為true)阻止輸入法彈出

 editText=(EditText)findViewById(R.id.txtBody);

   editText.setOnTouchListener(new OnTouchListener(){  

         public boolean onTouch(View v, MotionEvent event){ 

            editText.setInputType(InputType.TYPE_NULL); //關閉軟鍵盤     

            return false;

         }

    });

(2)當EidtText無焦點(focusable=false)時阻止輸入法彈出

 InputMethodManager imm =

(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 

 imm.hideSoftInputFromWindow(editText.getWindowToken(),0);

(3)呼叫數字鍵盤並設定輸入型別和鍵盤為英文

etNumber.setInputType(InputType.TYPE_CLASS_NUMBER); //呼叫數字鍵盤

rlEditText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);//設定輸入型別和鍵盤為英文 或者:android:inputType="textUri|textMultiLine"

(4)android:focusable="false"//鍵盤永遠不會彈出

<activity android:name=".AddLinkman"android:windowSoftInputMode="adjustUnspecified|stateHidden"/>//不自動彈出鍵盤

//關閉鍵盤(比如輸入結束後執行) InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(etEditText.getWindowToken(), 0);

//自動彈出鍵盤

((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);

etEditText.requestFocus();//讓EditText獲得焦點,但是獲得焦點並不會自動彈出鍵盤

7、android:layout_gravity和android:gravity的區別

(1)android:layout_gravity是本元素對父元素的重力方向。

(2)android:gravity是本元素所有子元素的重力方向。

8、android:padding和android:layout_margin區別

這兩個都可以設定邊距,但有細微的區別:

(1)android:padding是相對父view的邊距

(2)android:layout_margin是相對同一級View的邊距

例:LinearLayout是水平佈局,下面有兩個按鈕,

(a)如果右邊的按鈕想距左邊的按鈕15px,因為這兩個按鈕是同一級的,應該用android:layout_margin;

(b)如果右邊的按鈕想距左邊的距離為350px,應該用android:padding

9、android:numeric//只接受數字

android:numeric來控制輸入的數字型別,一共有三種分別為integer(正整數)、signed(帶符號整數,有正負)和decimal(浮點數)。

10、Enter鍵圖示的設定

軟鍵盤的Enter鍵預設顯示的是“完成”文字,我們知道按Enter建表示前置工作已經準備完畢了,要去什麼什麼啦。比如,在一個搜尋中,我們輸入要搜尋的文字,然後按Enter表示要去搜索了,但是預設的Enter鍵顯示的是“完成”文字,看著不太合適,不符合搜尋的語義,如果能顯示“搜尋”兩個字或者顯示一個表示搜尋的圖示多好。事實證明我們的想法是合理的,Android也為我們提供的這樣的功能。通過設定android:imeOptions來改變預設的“完成”文字。這裡舉幾個常用的常量值:

(1)actionUnspecified未指定,對應常量EditorInfo.IME_ACTION_UNSPECIFIED效果:

(2)actionNone 沒有動作,對應常量EditorInfo.IME_ACTION_NONE效果:

(3)actionGo去往,對應常量EditorInfo.IME_ACTION_GO 效果:

(4)actionSearch 搜尋,對應常量EditorInfo.IME_ACTION_SEARCH效果: 

(5)actionSend 傳送,對應常量EditorInfo.IME_ACTION_SEND效果:

(6)actionNext 下一個,對應常量EditorInfo.IME_ACTION_NEXT效果:

(7)actionDone 完成,對應常量EditorInfo.IME_ACTION_DONE效果:

11、使用android:imeOptinos可對Android自帶的軟鍵盤進行一些介面上的設定:

android:imeOptions="flagNoExtractUi" //使軟鍵盤不全屏顯示,只佔用一部分螢幕 同時,這個屬性還能控制元件軟鍵盤右下角按鍵的顯示內容,預設情況下為回車鍵 android:imeOptions="actionNone" //輸入框右側不帶任何提示 android:imeOptions="actionGo"   //右下角按鍵內容為'開始' android:imeOptions="actionSearch" //右下角按鍵為放大鏡圖片,搜尋 android:imeOptions="actionSend"   //右下角按鍵內容為'傳送' android:imeOptions="actionNext"  //右下角按鍵內容為'下一步' android:imeOptions="actionDone" //右下角按鍵內容為'完成'

12、限定edittext能輸入數字和字母,並且預設輸入為數字,如身份證號碼

android:inputType="number" android:digits="0123456789xyzXYZ"

13、軟鍵盤的調起導致原來的介面被擠上去,或者導致介面下面的tab導航被擠上去,解決方法如下

解決方法:

使用Manifest中的Activity的android:windowSoftInputMode的"adjustPan"屬性。

另外注意:有關軟鍵盤的問題可參考android:windowSoftInputMode中屬性。

14、edittext游標詳解 edittext.requestFocusFromTouch();//讓游標放入到點選位置。 edittext.requestFocus();//預設方式獲得焦點
EditText editor = (EditText)getCurrentView();//游標處插入 int cursor = editor.getSelectionStart(); editor.getText().insert(cursor,delta);

讓游標移到末端(這樣文字就會向前顯示) EditText et = ... String text = "text"; et.setText(text); et.setSelection(text.length());

android:cursorVisible="false" 隱藏游標

android:background="#00000000"//不要文字框背景 

在開發中,必不可少的會使用到文字框(EditText)來進行資料錄入,也就會需要對輸入法進行一些控制。
先看下LAYOUT定義檔案中的和輸入法有關的屬性:
屬性名
說明
android:inputType
指定輸入法的型別,int型別,可以用|選擇多個。取值可以參考:android.text.InputType類。取值包括:text,
  textUri, phone,number,等。
android:imeOptions
指定輸入法視窗中的回車鍵的功能,可選值為normal,
  actionNext,actionDone,actionSearch等。部分輸入法對此的支援可能不夠好。
下面的LAYOUT定義檔案舉了一些例子說明inputType和imeOptions的使用。
<EditText
android:id="@+id/textNormal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Normal
text"
android:inputType="text"
android:imeOptions="actionNext"
/>
<EditText
android:id="@+id/textInteger"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Integer
only"
android:inputType="number"
android:imeOptions="actionNext"
/>
<EditText
android:id="@+id/textPhone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Phone
number"
android:inputType="phone"
android:imeOptions="actionNext"
/>
<EditText
android:id="@+id/textEmail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:imeOptions="actionSend"
android:inputType="textEmailAddress"
/>
<EditText
android:id="@+id/textSite"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Web
Site"
android:imeOptions="actionDone"
android:inputType="textUri"
/>


有時候也要對intent的預設焦點進行設定,不至於在intent跳轉的時候預設焦點(游標)在EditText上,導致進入intent就開啟輸入法,影響介面美觀。
預設焦點的順序是:從上倒下
從左到右第一個可以輸入的控制元件作為焦點
可以使用:
button.setFocusable(true);
button.requestFocus();
button.setFocusableInTouchMode(true);
也可以:
在EditText前面放置一個看不到的LinearLayout,讓他率先獲取焦點:
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>
Android EditText 屬性彙總

Android EditText 屬性彙總

EditText繼承關係:View-->TextView-->EditText
EditText的屬性很多,這裡介紹幾個:
android:hint="請輸入數字!"//設定顯示在空間上的提示資訊
android:numeric="integer"//設定只能輸入整數,如果是小數則是:decimal
android:singleLine="true"//設定單行輸入,一旦設定為true,則文字不會自動換行。
android:password="true"//設定只能輸入密碼
android:textColor = "#ff8c00"//字型顏色
android:textStyle="bold"//字型,bold, italic, bolditalic
android:textSize="20dip"//大小
android:capitalize = "characters"//以大寫字母寫
android:textAlign="center"//EditText沒有這個屬性,但TextView有,居中
android:textColorHighlight="#cccccc"//被選中文字的底色,預設為藍色
android:textColorHint="#ffff00"//設定提示資訊文字的顏色,預設為灰色android:textScaleX="1.5"//控制字與字之間的間距
android:typeface="monospace"//字型,normal, sans, serif, monospace
android:background="@null"//背景,這裡沒有,指透明
android:layout_weight="1"//權重,控制控制元件之間的地位,在控制控制元件顯示的大小時蠻有用的。
android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外觀
android:layout_gravity="center_vertical"//設定控制元件顯示的位置:預設top,這裡居中顯示,還有bottom
android:gray="top" //多行中指標在第一行第一位置
et.setSelection(et.length());//調整游標到最後一行
android:autoText //自動拼寫幫助
android:capitalize //首字母大寫
android:digits //設定只接受某些數字
Android:singleLine//是否單行或者多行,回車是離開文字框還是文字框增加新行
android:numeric //只接受數字
android:phoneNumber //輸入電話號碼
android:editable //是否可編輯
android:autoLink=”all” //設定文字超連結樣式當點選網址時,跳向該網址 
android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外觀,這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。不知道這樣理解對不對? 
       
 屬性名稱描述
android:autoLink設定是否當文字為URL連結/email/電話號碼/map時,文字顯示為可點選的連結。可選值(none/web/email/phone/map/all)
android:autoText如果設定,將自動執行輸入值的拼寫糾正。此處無效果,在顯示輸入法並輸入的時候起作用。
android:bufferType指定getText()方式取得的文字類別。選項editable 類似於StringBuilder可追加字元,
也就是說getText後可呼叫append方法設定文字內容。spannable 則可在給定的字元區域使用樣式,參見這裡1、這裡2。
android:capitalize設定英文字母大寫型別。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明。
android:cursorVisible設定游標為顯示/隱藏,預設顯示。
android:digits設定允許輸入哪些字元。如“1234567890.+-*/% ()”
android:drawableBottom在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會把text的背景設為該顏色,並且同時和background使用時覆蓋後者。
android:drawableLeft在text的左邊輸出一個drawable,如圖片。
android:drawablePadding設定text與drawable(圖片)的間隔,與drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可設定為負數,單獨使用沒有效果。 
android:drawableRight在text的右邊輸出一個drawable,如圖片。
android:drawableTop在text的正上方輸出一個drawable,如圖片。
android:editable設定是否可編輯。這裡無效果,參見EditView。
android:editorExtras設定文字的額外的輸入資料。在EditView再討論。
android:ellipsize設定當文字過長時,該控制元件該如何顯示。有如下值設定:”start”—?省略號顯示在開頭;”end”——省略號顯示在結尾;”middle”—-省略號顯示在中間;”marquee” ——以跑馬燈的方式顯示(動畫橫向移動)
android:freezesText設定儲存文字的內容以及游標的位置。參見:這裡。
android:gravity設定文字位置,如設定成“center”,文字將居中顯示。
android:hintText為空時顯示的文字提示資訊,可通過textColorHint設定提示資訊的顏色。此屬性在EditView中使用,但是這裡也可以用。
android:imeOptions附加功能,設定右下角IME動作與編輯框相關的動作,如actionDone右下角將顯示一個“完成”,而不設定預設是一個回車符號。這個在EditView中再詳細說明,此處無用。
android:imeActionId設定IME動作ID。在EditView再做說明,可以先看這篇帖子:這裡。
android:imeActionLabel設定IME動作標籤。在EditView再做說明。
android:includeFontPadding設定文字是否包含頂部和底部額外空白,預設為true。
android:inputMethod為文字指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這裡報錯找不到。
android:inputType設定文字的型別,用於幫助輸入法顯示合適的鍵盤型別。在EditView中再詳細說明,這裡無效果。
android:linksClickable設定連結是否點選連線,即使設定了autoLink。
android:marqueeRepeatLimit在ellipsize指定marquee的情況下,設定重複滾動的次數,當設定為marquee_forever時表示無限次。
android:ems設定TextView的寬度為N個字元的寬度。這裡測試為一個漢字字元寬度,如圖:
android:maxEms設定TextView的寬度為最長為N個字元的寬度。與ems同時使用時覆蓋ems選項。
android:minEms設定TextView的寬度為最短為N個字元的寬度。與ems同時使用時覆蓋ems選項。
android:maxLength限制顯示的文字長度,超出部分不顯示。
android:lines設定文字的行數,設定兩行就顯示兩行,即使第二行沒有資料。
android:maxLines設定文字的最大顯示行數,與width或者layout_width結合使用,超出部分自動換行,超出行數將不顯示。
android:minLines設定文字的最小行數,與lines類似。
android:lineSpacingExtra設定行間距。
android:lineSpacingMultiplier設定行間距的倍數。如”1.2”
android:numeric如果被設定,該TextView有一個數字輸入法。此處無用,設定後唯一效果是TextView有點選效果,此屬性在EdtiView將詳細說明。
android:password以小點”.”顯示文字
android:phoneNumber設定為電話號碼的輸入方式。
android:privateImeOptions設定輸入法選項,此處無用,在EditText將進一步討論。
android:scrollHorizontally設定文字超出TextView的寬度的情況下,是否出現橫拉條。
android:selectAllOnFocus如果文字是可選擇的,讓他獲取焦點而不是將游標移動為文字的開始位置或者末尾位置。TextView中設定後無效果。
android:shadowColor指定文字陰影的顏色,需要與shadowRadius一起使用。效果:
android:shadowDx設定陰影橫向座標開始位置。
android:shadowDy設定陰影縱向座標開始位置。
android:shadowRadius設定陰影的半徑。設定為0.1就變成字型的顏色了,一般設定為3.0的效果比較好。
android:singleLine設定單行顯示。如果和layout_width一起使用,當文字不能全部顯示時,後面用“…”來表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"將只顯示“t…”。如果不設定singleLine或者設定為false,文字將自動換行
android:shadowDx設定陰影橫向座標開始位置。
android:shadowDy設定陰影縱向座標開始位置。
android:shadowRadius設定陰影的半徑。設定為0.1就變成字型的顏色了,一般設定為3.0的效果比較好。
android:singleLine設定單行顯示。如果和layout_width一起使用,當文字不能全部顯示時,後面用“…”來表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"將只顯示“t…”。如果不設定singleLine或者設定為false,文字將自動換行
android:text設定顯示文字.
 android:textSize設定文字大小,推薦度量單位”sp”,如”15sp”
android:textStyle設定字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設定一個或多個,用“|”隔開
android:typeface設定文字字型,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字型) 3]
android:height設定文字區域的高度,支援度量單位:px(畫素)/dp/sp/in/mm(毫米)
android:maxHeight設定文字區域的最大高度
android:minHeight設定文字區域的最小高度
android:width設定文字區域的寬度,支援度量單位:px(畫素)/dp/sp/in/mm(毫米),與layout_width的區別看這裡。
android:maxWidth設定文字區域的最大寬度
android:minWidth設定文字區域的最小寬度
android:textAppearance設定文字外觀。如“?android:attr/textAppearanceLargeInverse
”這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。可設定的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textAppearance設定文字外觀。如“?android:attr/textAppearanceLargeInverse
”這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。可設定的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse