android:windowSoftInputMode屬性詳解以及editText監聽鍵盤迴車會執行兩次的解決方法

android:windowSoftInputMode各值的含義:

  1. stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
  2. stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity裏的狀態,無論是隱藏還是顯示
  3. stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
  4. stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
  5. stateVisible:軟鍵盤通常是可見的
  6. stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
  7. adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
  8. adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
  9. adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分

1. 啓動activity時候強制editetext彈出輸入法

   <activity
        android:name=".OrderFavourableActivity"
        android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden|locale"
        android:windowSoftInputMode="stateVisible|adjustPan" />
        />         

2. 啓動activity時候禁止editetext彈出輸入法

<activity
        android:name=".OrderFavourableActivity"
        android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustUnspecified|stateHidden" />

2.1 啓動activity時候禁止editetext彈出輸入法

讓EditText失去焦點,使用EditText的clearFocus方法 例如:EditText edit=(EditText)findViewById(R.id.edit); edit.clearFocus();

2.2 強制隱藏Android輸入法窗口

例如:EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

2.3 EditText始終不彈出軟件鍵盤

例:EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);

注意,EditText監聽鍵盤迴車會執行兩次

會發現執行了兩次,當然原因很簡單,引文onkey事件包含了down和up事件,所以只需要加入一個判斷即可
 etContent.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if (keyCode == KeyEvent.KEYCODE_ENTER  && event.getAction() == KeyEvent.ACTION_UP) {
                      }
            return false;
        }
    });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章