Android EditText的設定
1、輸入法Enter鍵圖示的設定:
軟體盤的介面替換隻有一個屬性android:imeOptions,這個屬性的可以取的值有normal,actionUnspecified,actionNone,actionGo,actionSearch,actionSend,actionNext,actionDone,例如當值為actionNext時enter鍵外觀變成一個向下箭頭,而值為actionDone時enter鍵外觀則變成了“完成”兩個字。
我們也可以重寫enter的事件
軟鍵盤的Enter鍵預設顯示的是“完成”文字,通過設定android:imeOptions來改變預設的“完成”文字。這裡舉幾個常用的常量值:
actionUnspecified 未指定,對應常量EditorInfo.IME_ACTION_UNSPECIFIED.
actionNone 沒有動作,對應常量EditorInfo.IME_ACTION_NONE
actionGo 去往,對應常量EditorInfo.IME_ACTION_GO
actionSearch 搜尋,對應常量EditorInfo.IME_ACTION_SEARCH
actionSend 傳送,對應常量EditorInfo.IME_ACTION_SEND
actionNext 下一個,對應常量EditorInfo.IME_ACTION_NEXT
actionDone 完成,對應常量EditorInfo.IME_ACTION_DONE
(EditorInfo.inputType & EditorInfo.TYPE_CLASS_MASK)可以是許多不同的值,包括:
TYPE_CLASS_NUMBER
TYPE_CLASS_DATETIME
TYPE_CLASS_PHONE
TYPE_CLASS_TEXT
2、事件捕捉處理:
可以通過setOnEditorActionListener設定事件處理。
final EditText input = new EditText(this); input.setSingleLine(true); //android:singleLine=”true” input.setImeOptions(EditorInfo.IME_ACTION_SEND); input.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD); input.setOnEditorActionListener(new TextView.OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { Log.d(TAG, ""+actionId+","+event); if (actionId==EditorInfo.IME_ACTION_SEND ||(event!=null&&event.getKeyCode()== KeyEvent.KEYCODE_ENTER)) { //do something; return true; } return false; } });
3、editor密碼隱藏,怎麼寫?
有2種方法處理:
程式碼方法:input.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_PASSWORD);
layout配置方法:android:inputType="textPassword"
4、activity載入完成後,edit輸入框會自動彈出輸入法,可以通過以下程式碼遮蔽:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
5、設定EditText始終不彈出軟體鍵盤
例:EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
6、讓 EditText失去焦點,使用EditText的clearFocus方法
例如:EditText edit=(EditText)findViewById(R.id.edit);
edit.clearFocus();
7、EditText預設不彈出軟體鍵盤
在 AndroidMainfest.xml中選擇activity,設定windowSoftInputMode屬性為 adjustUnspecified|stateHidden
< activity android:name=".Main" android:label="@string/app_name" android:windowSoftInputMode="adjustUnspecified|stateHidden" android:configChanges="orientation|keyboardHidden"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity>
8、設定游標到指定位置
EditText et = (EditText) findViewById(R.id.etTest);
et.setSelection(2);
//設定游標不顯示,但不能設定游標顏色
et.setCursorVisible(false);
//獲得焦點時全選文字
et.setSelectAllOnFocus(true);
et.requestFocus();//請求獲取焦點
et.clearFocus(); //清除焦點
使用EditText的setError提示
et.setError("郵箱");
自定義圖示的setError提示
Drawable dr = getResources().getDrawable(R.drawable.ic_launcher); dr.setBounds(0, 0, 10, 10); //必須設定大小,否則不顯示 et.setError("有錯誤提示", dr);
et.setInputType(InputType.TYPE_CLASS_PHONE);//只能輸入電話號碼
et.setInputType(InputType.TYPE_CLASS_NUMBER);//只能輸入數字
et.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);//只能輸入郵箱地址
et.setInputType(InputType.TYPE_NULL);// 禁止輸入(不彈出輸入法)
XML實現案例
<EditText android:id="@+id/etTest" android:inputType="number" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
8、EditText相關屬性
EditText繼承關係:View-->TextView-->EditText。
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"