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弹出输入法

   
        />         

2. 启动activity时候禁止editetext弹出输入法


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;
        }
    });

你可能感兴趣的:(Android总结篇)