我有一个扩展对话框类的自定义对话框。
我必须让它关注其中一个edittext并在启动对话框时显示该软键。
我已经看了几个答案,其中包括使用inputmanager,但没有那么多运气。
调用对话框的活动设置为默认隐藏软键,该软键在清单上设置。
在这种情况下,我该怎么办?
答案 0 :(得分:1)
我会建议您在start_of_the_dialog上关闭键盘,方法是重新输入#SOF个答案。如果它不起作用只需在处理程序的帮助下添加100毫秒延迟,以在对话框的开始关闭键盘。
答案 1 :(得分:0)
首先假设:
通过这个声明:
调用对话框的活动设置为默认隐藏软键,该软键在清单上设置。
这是否意味着它具有这样的windowSoftInputMode
属性?
<activity
android:name=".MainActivity"
...
android:windowSoftInputMode="stateHidden">
...
</activity>
一种方法是在对话框的创建上设置OnShowListener
。
在 class-that-extends-Dialog 类上,您可以创建一个OnStateListener
并在构造函数上声明它,如下所示:
public class MyDialog extends Dialog {
public MyDialog(final Context context) {
super(context);
setContentView(R.layout.dialog_mydialog);
setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
displayKeyboard(context);
}
});
}
private void displayKeyboard(Context context) {
View view = findViewById(R.id.et_dialog_field);
InputMethodManager inputMethodManager =
(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(
view.getApplicationWindowToken(),
InputMethodManager.SHOW_FORCED, 0);
}
}
在活动中我假设你有类似的东西:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
MyDialog dialog = new MyDialog(MainActivity.this);
dialog.show();
}
});
唯一需要注意的是,如果有人要求设置OnShowListener
,它会覆盖你的。{/ p>
我从this answer获得了 show-soft-input 代码片段。
答案 2 :(得分:0)
ediText.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
},100);