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

Posted

技术标签:

【中文标题】在 Android 应用程序中设置初始焦点【英文标题】:Set initial focus in an Android application 【发布时间】:2011-02-14 04:09:19 【问题描述】:

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

【问题讨论】:

【参考方案1】:

你可以使用requestFocus标签:

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

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

【讨论】:

是的,现在我的两个应用程序都发生了这种情况。我想我可以 requestFocus 到一个不会像 TextView 一样改变的元素上,还是不允许这样做? @stealthcopter:你能告诉我你使用的是哪个安卓版本吗?我正在使用 2.1 和 2.2,但 requestFocus 不起作用。 好吧,我在所有版本中都在使用它,但我遇到的问题似乎自行消失了,所以我没有进行太多调查。 我尝试过 XML 方法,我尝试过编程方法。然而 EditText 保持焦点。很烦人! 在这里:developer.android.com/guide/topics/resources/…【参考方案2】:

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

<LinearLayout android:focusable="true"
              android:focusableInTouchMode="true" 
              android:layout_
              android:layout_ >
    <requestFocus />
</LinearLayout>

【讨论】:

我能够专注于 AlertDialog 并且启用 focusableintouchmode 帮助我做到了。本质上,方法如下: alert.show(); alert.getButton(AlertDialog.BUTTON_POSITIVE).setFocusableInTouchMode(true);alert.getButton(AlertDialog.BUTTON_NEGATIVE).requestFocus(); 谢谢!这是唯一对我有用的解决方案。虽然我使用它略有不同;我将焦点内容放在包含EditTextRelativeLayout 中。 对于 Android P,平台将发生以下变化:“区域为 0(宽度或高度为 0)的视图不再具有焦点。此外,活动不再隐式分配初始焦点在触摸-mode。相反,如果需要,您可以明确请求初始焦点。"【参考方案3】:

:focusable:focusableInTouchMode 都设置为true 并调用requestFocus。它成功了。

【讨论】:

是的,这是修复它的真正解决方案。谢谢安德斯【参考方案4】:

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

在AndroidManifest.xml中&lt;activity&gt; element添加android:windowSoftInputMode="stateHidden"

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

【讨论】:

简单干净! 太棒了……这令人印象深刻!【参考方案5】:

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

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

问题解决了。

【讨论】:

【参考方案6】:

使用下面的代码,

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

应该可以。

【讨论】:

【参考方案7】:

@Someone Someone 我用它来清除焦点:

editText.clearFocus();

它有帮助

【讨论】:

【参考方案8】:
android:focusedByDefault="true"

【讨论】:

属性 focusedByDefault 仅用于 API 级别 26 及更高级别(当前最小值为 21)。

以上是关于在 Android 应用程序中设置初始焦点的主要内容,如果未能解决你的问题,请参考以下文章

Extjs - 在面板中设置焦点字段

在 ios7 xcode 中设置相机焦点。 opencv

安卓按键设置焦点

安卓按键设置焦点

如何在android中设置初始拥塞窗口大小?

android 中如何设置焦点的位置。