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


86

在我的Android应用程序中,它会自动聚焦Button布局中的第一个,并为它显示橙色轮廓。如何最好以XML设置初始焦点,并且可以将其设置为空?

Answers:


159

您可以使用requestFocus标签:

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

尽管它会自动为您的一个按钮自动对焦,但我觉得很奇怪,但我在任何视图中都没有观察到这种行为。


是的,现在我的两个应用程序都发生了这种情况。我想我可以将RequestFocus放到像TextView一样不变的元素上,还是不允许这样做?
secretthcopter

1
@stealthcopter:能告诉我您使用的是哪个Android版本。我使用的是2.1和2.2,但是requestFocus无法正常工作。
anticafe 2011年

好吧,我已经在所有版本中使用了它,但是我似乎已经独自消失的问题,所以我没有做太多研究。
隐身直升机2011年

19
我尝试了XML方法,也尝试了编程方法。然而EditText仍然是焦点。很烦人 !
某处某人

4
<requestFocus的/>是在这里:developer.android.com/guide/topics/resources/...
埃里克乙

63

@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>

我能够将注意力集中在AlertDialog上,启用focusableintouchmode可以帮助我正确地进行操作。本质上,方法如下:alert.show(); alert.getButton(AlertDialog.BUTTON_POSITIVE).setFocusableInTouchMode(true); alert.getButton(AlertDialog.BUTTON_NEGATIVE).requestFocus();
Sagar Hatekar

2
谢谢!这是对我而言唯一有效的解决方案。虽然我用的略有不同;我将焦点内容放在RelativeLayoutEditText
卡卡2012年

1
随着Android P平台的以下变化:“具有0区域(宽度或高度为0)的视图不再可聚焦。此外,活动不再隐式地在触摸模式下分配初始焦点。而是向上如果需要的话,您可以明确要求最初的关注。”
AustrianDude

28

:focusable和都设置:focusableInTouchMode为true并调用requestFocus。它能解决问题。


是的,这是修复此问题的真正解决方案。感谢安德斯
gokhansari 2013年

23

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

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

进入活动时,这始终隐藏键盘。


简单干净!
SHADOW.NET

太好了...这非常令人印象深刻!
gumuruh

11

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

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

问题解决了。


适用于Android 2.3.3。
Gaurav Agarwal

7

使用下面的代码,

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

那应该工作。


3

@Someone在某处,我用它来清除焦点:

editText.clearFocus();

它有帮助


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.