Android: EditText設置屬性和設置輸入規則


1.EditText輸入限制規則

在xml:EditText 設置屬性

android:digits="ABCDE123&*"

ABCDE123&*是你的限制規則

例如:android:digits="0123456789abc"

規則是只能輸入英文字母(小寫)abc和數字

2.EditTex輸入的文字為密碼形式

(1)在xml中設置

android:password="true" //以"."形式顯示文本

(2)在代碼里設置

通過設置EditTex的setTransformationMethod()方法來實現隱藏密碼和顯示密碼

editText.setTransformationMethod(PasswordTransformationMethod.getInstance());

//設置密碼不可見

3.EditTex輸入的文字為電話號碼

android:phoneNumber="true"//輸入電話號碼

4.EditTex字數限制

(1)在xml中設置

android:maxLength="50"

(2)在代碼中設置

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

5.EditTex是否可編輯

android:editable="true"//可編輯,false不可編輯

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

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

editText.setOnTouchListener(new OnTouchListener(){

public boolean onTouch(View view,MotionEvent event){

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

return false;

}});

(2)EditText無焦點(focusable=false)時阻擋輸入法彈出

InputMethodManager imm=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);

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

(3)調用數字鍵盤並設置輸入類型和鍵盤為英文

editText.setInputType(InputType.TYPE_CLASS_NUMBER);//調用數字鍵盤

editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);//英文

(4)鍵盤永遠不會彈出

android:focusable="false"// 鍵盤永不彈出

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

使用Mainfest中的Activity的android:windowSfotInputMdoe的“adjustPan"屬性

另外注意:有關軟鍵盤的問題可參考android:windowSoftInputMode中的屬性,下面可防止toolbar與EditText共用出現的toolBar拉伸現象。

android:windowSoftInputMode="stateVisible|adjustPan|stateHidden" 

8.光標詳解

editText.requestFocusFromTouch();//讓光標放入到點擊位置

editText.requestFocus();//默認方式獲得焦點

editText editor=(EditText)getCurrentView();//光標插入

int cursor=editor.getSelectionStart();//光標插入

editor.getText().inset(cursor,delta);

Android EditText 屬性匯總

android:layout_gravity="center_vertical" 設置控件顯示的位置:默認top,這里居中顯示,還有bottom 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" 文字外觀,這里引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用默認的外觀。不知道這樣理解對不對? 通過EditText的layout xml文件中的相關屬性來實現:

1. 密碼框屬性 android:password="true" 這條可以讓EditText顯示的內容自動為星號,輸入時內容會在1秒內變成*字樣。

2. 純數字 android:numeric="true" 這條可以讓輸入法自動變為數字輸入鍵盤,同時僅允許0-9的數字輸入

3. 僅允許 android:capitalize="cwj1987" 這樣僅允許接受輸入cwj1987,一般用於密碼驗證 下面是一些擴展的風格屬性

android:editable="false" 設置EditText不可編輯

android:singleLine="true" 強制輸入的內容在單行

android:ellipsize="end" 自動隱藏尾部溢出數據,一般用於文字內容過長一行無法全部顯示時

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM