我正在使用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);
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3194875