如何在程序中编程设置EditText的焦点(并显示键盘)

235

我有一个布局,其中包含一些像这样的视图:

<LinearLayout>
<TextView...>
<TextView...>
<ImageView ...>
<EditText...>
<Button...>
</linearLayout>

如何在程序中设置焦点(显示键盘)到我的EditText上?

我尝试了这个方法,当我正常启动我的Activity时它有效,但当我在TabHost中启动它时不起作用。

txtSearch.setFocusableInTouchMode(true);
txtSearch.setFocusable(true);
txtSearch.requestFocus();

http://www.android-ios-tutorials.com/93/android-show-hide-soft-keyboard-programmatically/ - Houcine
可能是重复的问题:如何在EditText获得焦点时显示软键盘 - raukodraug
21个回答

-1

我无法让这些答案单独工作。对我来说,解决方案是将它们结合起来:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
editText.requestFocus();
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);

我不确定为什么这对我是必需的 - 根据文档,似乎任何一种方法都应该单独工作。


这绝对不是一个好的做法。也许,Activity或Fragment事务正在干扰软键盘或输入法标志没有正确设置,但无论如何,这个解决方案都不应该被使用。 - Marcel Bro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接