在Android应用程序中设置初始焦点

ste*_*ter 83 android focus

在我的Android应用程序中,它自动聚焦我的布局中的第一个按钮,给它一个橙色轮廓.如何最好用XML设置初始焦点,这可以设置为空吗?

Mat*_*ias 158

你可以使用requestFocus标签:

<Button ...>
  <requestFocus />
</Button>
Run Code Online (Sandbox Code Playgroud)

我觉得奇怪的是,它会自动聚焦你的一个按钮,我没有在我的任何视图中观察到这种行为.

  • 我尝试过XML方法,我尝试过程序化方法.然而,EditText保留了焦点.很烦人 ! (18认同)
  • <requestFocus />位于:http://developer.android.com/guide/topics/resources/layout-resource.html#requestfocus-element (4认同)
  • 我相信它适用于任何可以集中精力的观点. (3认同)

小智 61

@Someone某处,我尝试了以上所有方面都无济于事.我找到的修复程序来自http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android.基本上,您需要在有问题的Button上方创建一个不可见的布局:

<LinearLayout android:focusable="true"
              android:focusableInTouchMode="true" 
              android:layout_width="0px"
              android:layout_height="0px" >
    <requestFocus />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这是对我的案例有效的**唯一**解决方案。虽然我用的略有不同;我将焦点内容放在包含“EditText”的“RelativeLayout”中。 (2认同)

Rui*_*ivo 26

同时设置:focusable:focusableInTouchMode为true,并调用requestFocus.它成功了.


小智 22

我发现这对我来说效果最好.

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

这总是在进入活动时隐藏键盘.


小智 11

我只是将这行代码添加到onCreate():

this.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

问题解决了.


小智 7

使用下面的代码,

TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody);
tableRow.requestFocus();
Run Code Online (Sandbox Code Playgroud)

应该工作.