Android:焦点在EditText上时自动显示软键盘

牧云@^-^@ 提交于 2020-03-14 20:38:47

我正在使用AlertDialog显示一个输入框。 当我调用AlertDialog.show() ,对话框内部的EditText会自动聚焦,但软键盘不会自动显示。

如何在显示对话框时自动显示软键盘? (并且没有物理/硬件键盘)。 与按下“搜索”按钮调用全局搜索的方式类似,将自动显示软键盘。


#1楼

如果有人得到:

无法从类型Activity对静态方法getSystemService(String)进行静态引用

尝试向getSystemService调用添加上下文

所以

InputMethodManager imm = 
(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

#2楼

是的,你可以用setOnFocusChangeListener来帮助你。

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});

#3楼

用于显示键盘用途:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

隐藏键盘使用:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(),0); 

#4楼

让我指出一些额外的信息到yuku的解决方案,因为我发现很难让这个工作! 如何从AlertDialog.Builder获取AlertDialog对象? 好吧,这是我的alert.show()执行的结果:

final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());
alert.setView(input);

// do what you need, like setting positive and negative buttons...

final AlertDialog dialog = alert.show();

input.setOnFocusChangeListener(new OnFocusChangeListener() {
   @Override
   public void onFocusChange(View v, boolean hasFocus) {
      if(hasFocus) {
         dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
      }
   }
});

#5楼

<activity
    ...
    android:windowSoftInputMode="stateVisible" >
</activity>

要么

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!