2010-04-30 189 views
76

在我的Android应用程序,它会自动把第一按钮我在我的布局,给它一个橙色轮廓。我怎样才能将初始焦点设置为XML,并且可以将它设置为无?设置初始焦点

回答

140

您可以使用requestFocus标签:

<Button ...> 
    <requestFocus /> 
</Button> 

我觉得很奇怪,虽然它的自动聚焦的按钮中的一个,我还没有看到任何自己的看法这种行为。

+0

是的,它已经发生了与我的两个应用程序现在。我想我可以requestFocus到一个不会像TextView那样改变的元素,还是不允许这样做? – stealthcopter 2010-04-30 10:58:44

+3

我相信它会适用于任何可以关注的视图。 – Matthias 2010-04-30 15:49:12

+1

@stealthcopter:你能告诉我你正在使用哪个Android版本。我使用2.1和2.2,但requestFocus不起作用。 – anticafe 2011-03-05 15:00:40

21

:focusable:focusableInTouchMode设置为true,并调用requestFocus。它有诀窍。

+1

终于发现这是IS解决方案,谢谢 – unruledboy 2013-08-14 00:14:54

+0

是的,这是解决它的真正解决方案。谢谢安德斯 – GkhnSr 2013-09-27 12:57:05

+0

有一个EditText时,仍然不工作。 – m0skit0 2015-06-12 14:50:03

3

@Someone带我​​用这个明确的重点:

editText.clearFocus(); 

,它可以帮助

+0

在Android 2.3.3中不起作用。 – 2013-02-12 18:43:56

54

@Someone地方,我尝试了上述所有的都无济于事。我发现的修复程序是从http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android。基本上,你需要创建略高于问题按钮一种无形的布局:

<LinearLayout android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:layout_width="0px" 
       android:layout_height="0px" > 
    <requestFocus /> 
</LinearLayout> 
+0

我能够专注于一个AlertDialog,并启用focusableintouchmode帮助我做对了。基本上,这是如何:alert.show(); alert.getButton(AlertDialog.BUTTON_POSITIVE).setFocusableInTouchMode(真); alert.getButton(AlertDialog.BUTTON_NEGATIVE).requestFocus(); – 2012-01-19 15:30:15

+1

谢谢!这是**我唯一的**解决方案,在我的情况下工作。虽然我用它略有不同,我把焦点放在一个包含'EditText'的RelativeLayout中。 – kaka 2012-09-27 12:49:15

6

使用下面的代码,

TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody); 
tableRow.requestFocus(); 

,应该工作。

11

我只需添加这行代码到onCreate()

this.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

问题解决了。

+0

适用于Android 2.3.3。 – 2013-02-12 18:44:23

17

我发现这个工作最适合我。

在AndroidManifest.xml <activity> element添加android:windowSoftInputMode="stateHidden"

进入活动时,这总是隐藏键盘。

+1

真棒..你读了我的思想.. :) :) – 2014-09-23 19:00:40