1. 程式人生 > >安卓-關於EditText的那些事......

安卓-關於EditText的那些事......

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, "請輸入需要搜尋的內容");
   }
}