我有这段代码( RelativeLayout 只是我主要布局中的一行,并不重要。)
RelativeLayout cellphoneNumberLayout = (RelativeLayout) findViewById(R.id.cellphone_number);
cellphoneNumberLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SettingsDialog myDialog = new SettingsDialog(Main.this);
myDialog.show();
}
});
在我的自定义对话框( SettingsDialog )中,我有 EditText 和一个按钮。如何在显示对话框时强制键盘打开并专注于我的(单个)EditText字段?
我尝试过经典的“强制”,我在这里找到了SO,但这不是活动,而是一个对话框。
编辑:我试过了,但它没有用。将 myDialog 声明为类变量,并添加到 myDialog.show();
下方myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
什么都没发生。
答案 0 :(得分:6)
以下将在editText聚焦时调出键盘:
EditText editText;
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean focused)
{
if (focused)
{
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
然后只需将editText设置为聚焦:
editText.setFocusable(true);
editText.requestFocus();
答案 1 :(得分:1)
以下将在editText聚焦时调出键盘,特别是当你有自定义Dialog / DialogFragment时:
myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
答案 2 :(得分:0)
在AndroidManifest.xml中,您可以将android:windowSoftInputMode =“stateVisible”添加到activity标签中以自动显示键盘。