我在MainActivity布局中有2个EditTexts。如果我正常运行应用程序,第一个EditText会聚焦,但软键盘不会打开。
但是当我使用它时:
public class TestingActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText et1 = (EditText) findViewById(R.id.editText1);
EditText et2 = (EditText) findViewById(R.id.editText2);
et2.requestFocus();
InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);
}
}
期望第二个EditText将获得焦点,并且将打开软键盘。
我只获得焦点,但只有当我点击EditText时才会打开软键盘。
谢谢
答案 0 :(得分:6)
尝试在活动的AndroidManifest.xml
文件中指定android:windowSoftInputMode属性。
例如:
<activity android:name=".TestingActivity" android:windowSoftInputMode="stateVisible|adjustResize" />
您可能不需要在Activity中使用InputMethodManager
的任何代码。
答案 1 :(得分:1)
我注意到键盘没有显示的一个原因是选择特定Android设备不支持的输入类型。例如,InputType.TYPE_NUMBER_VARIATION_NORMAL对我的Asus Transformer不起作用(没有键盘显示),而InputType.TYPE_CLASS_NUMBER也可以正常工作。
答案 2 :(得分:1)
et2.clearFocus();
et2.requestFocus();
InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);
我在Android N平台上遇到问题并通过重新调整editview来解决它。 我不知道为什么应该首先清除editview的真正原因,但它对我来说很好。
答案 3 :(得分:0)
有时你需要延迟显示键盘命令,所以在我的情况下,我做了以下
editText.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
}, 300);
答案 4 :(得分:-2)
要将焦点集中到特定的edittext,只需在编辑文本中添加标记即可。
<EditText
android:id="@+id/etBox"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:hint="enter into editbox"
>
<requestFocus/>
</EditText>