安卓-關於EditText的那些事......
阿新 • • 發佈:2018-11-14
EditText 的一些不常用屬性
屬性 | 說明 |
---|---|
android:hint | text內容為空時顯示的文字 |
android:textColorHint | text內容為空時顯示的文字顏色 |
android:minLines | 設定文字最小的行數 |
android:maxLines | 設定文字最大的行數 |
android:drawableLeft | 左面的圖示(其他方向相同) |
android:drawablePadding | 設定text與drawable(圖片)的間隔,可設定為負數,單獨使用沒有效果。 |
android:digits | 設定允許輸入哪些字元。如“1234567890” |
android:ellipsize | 設定當文字過長時,該控制元件該如何顯示。 |
android:lines | 設定文字的行數 |
android:lineSpacingExtra | 設定行間距如“1.5” |
android:singleLine | 是否單行顯示 |
android:textStyle | 字型風格 |
android:numeric | integer(整數)decimal(小數) |
android:inputType | 限制輸入型別 number:數字 numberDecimal:小數點型別 date:日期型別 text:文字型別(預設值) phone:手機號 textPassword:密碼 textVisiblePassword:可見密碼 textUri:網址 |
EditText 的一些設定
1. 禁止EditText自動獲取焦點,彈出鍵盤
//在父控制元件中新增屬性
android:focusable="true"
android:focusableInTouchMode="true"
2.軟鍵盤的設定
//強制關閉軟鍵盤
private void hideKeyBoard(){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
// 改變鍵盤輸入法的狀態,如果已經彈出就關閉,如果關閉了就強制彈出
public static void chageInputState(Context context) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
//強制顯示輸入法
private void showKeyBoard(View v) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);// 顯示輸入法
}
//edit獲取游標焦點
edittext.requestFocus();
edittext.findFocus();
3. 當EditText超過一定長度時,用省略號代替
android:singleLine="true"
android:ellipsize="end"
//start:省略號顯示在開頭
//end:省略號顯示在結尾
//middle:省略號顯示在中間
//marquee:以跑馬燈的方式顯示(動畫橫向移動)
4. EditText的長度監聽事件
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.i("textbefore","內容改變之前呼叫:"+s);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("texton","內容改變,可以去告訴伺服器:"+s);
}
@Override
public void afterTextChanged(Editable s) {
Log.i("textafter","內容改變之後呼叫:"+s);
}
});
5.EditText軟鍵盤迴車鍵變為搜尋鍵
android:imeOptions="actionSearch"
android:singleLine="true"
//監聽回車鍵方法
edittext.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
// 隱藏軟鍵盤(上面的方法中有)
hideKeyBoard();
//進行搜尋操作的方法,在該方法中可以加入mEditSearchUser的非空判斷
search();
}
return false;
}
});
// 搜尋功能
private void search() {
String text= edittext.getText().toString().trim();
if (!TextUtils.isEmpty(searchContext)) {
// 此處調用搜索方法
doSearch(text);
} else {
T.show(this, "請輸入需要搜尋的內容");
}
}