问答中心分类: ANDROIDAndroid:强制 EditText 移除焦点? [复制]
0
匿名用户 提问 42分钟 前

这个问题在这里已经有了答案:

当活动在 Android 中启动时,如何阻止 EditText 获得焦点?
(54 个回答)

关闭6年前.

我希望能够从 EditText 中移除焦点。例如,如果键盘出现,并且用户使用后退按钮将其隐藏,我希望焦点和光标消失。怎么做到呢?

Heidar 回复 42分钟 前

EditText 之后还有其他可以关注的视图吗?

Heidar 回复 42分钟 前

是否可以聚焦 WebView?

Heidar 回复 42分钟 前

在这里查看我的答案:stackoverflow.com/questions/3890033/…

Heidar 回复 42分钟 前

检查出..stackoverflow.com/questions/1555109/…

Heidar 回复 42分钟 前

一行代码stackoverflow.com/a/46580242/6611895

Heidar 回复 42分钟 前

用于从编辑文本中删除光标 editText.setCursorVisible(false);

16 Answers
0
xtr 回答 42分钟 前

您可以通过以下方式使光标和焦点消失

edittext.clearFocus();

但是检测何时隐藏键盘是一项艰苦的工作。

JaydeepW 回复 42分钟 前

clearFocus() 不起作用。

Ashraf Bashir 回复 42分钟 前

它有效,但它将焦点重新设置为活动中的第一个可聚焦视图,因此如果您在活动中只有一个视图,您可能认为它没有,但它确实有效,您必须了解它的行为:)

edwoollard 回复 42分钟 前

如何将焦点返回到 EditText?我试过使用 .requestFocus();但这似乎不起作用。提前致谢。

Leon 回复 42分钟 前

我有一些应用程序,在我使用片段的应用程序中,clearFocus() 有效,在我只有 1 个活动的应用程序中它不起作用,焦点只是跳转到第一个 editText。

Loyalar 回复 42分钟 前

如果其他人正在努力使其正常工作,如果您添加android:focusable="true"android:focusableInTouchMode="true"到根Layout您的活动或片段,这会将焦点更改为Layout而不是EditText.

0
Singh Arjun 回答 42分钟 前

添加LinearLayoutEditText在您的 XML 中。

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

或者您可以通过在“EditText”之前添加这些行来查看相同的内容。

<Button
    android:id="@+id/btnSearch"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:gravity="center"
    android:text="Quick Search"
    android:textColor="#fff"
    android:textSize="13sp"
    android:textStyle="bold" />

<EditText
    android:id="@+id/edtSearch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="5dp"
    android:gravity="left"
    android:hint="Name"
    android:maxLines="1"
    android:singleLine="true"
    android:textColorHint="@color/blue"
    android:textSize="13sp"
    android:textStyle="bold" />
BasicPleasureModel 回复 42分钟 前

我喜欢将此解决方案与我的 EditText 上的 .clearFocus() 结合使用(这是布局中的第一个可聚焦项目,因此 clearFocus() 不能单独工作)。将 LinearLayout 欺骗为可聚焦是一种简单易行的解决方案。干得好辛格·阿琼 🙂

GuilhE 回复 42分钟 前

你只需要使用android:focusableInTouchMode="true"因为将此设置为 true 也将确保此视图可聚焦。

Brian 回复 42分钟 前

太棒了,谢谢辛格

Varundroid 回复 42分钟 前

体面的解决方案。

William 回复 42分钟 前

最佳广告最简单的解决方案

Amit Vaghela 回复 42分钟 前

只加安卓:focusableInTouchMode=”true”

Javad B 回复 42分钟 前

我不知道为什么,但对于这项工作,我应该使用 android:layout_width=”1dp” android:layout_height=”1dp”

0
Paschalis 回答 42分钟 前

移除焦点但保持焦点:

editText.setFocusableInTouchMode(false);
editText.setFocusable(false);
editText.setFocusableInTouchMode(true);
editText.setFocusable(true);

EditText 将失去焦点,但可以在新的触摸事件中再次获得焦点。

Shane Creighton-Young 回复 42分钟 前

这似乎将焦点转移到下一个可聚焦的视图,而不是从编辑文本中移除焦点。似乎 Android 永远不想“不专心”;出于这个原因,我选择在我的项目中使根布局可聚焦/focusableInTouchMode。它也具有语义意义:当您不想专注于特定的编辑文本时,将焦点设置到根布局类似于退后一步并专注于完整的活动/片段而不是特定的视图。

shift66 回复 42分钟 前

感谢一个简单的技巧!!!完美运行

Vinh Nguyen 回复 42分钟 前

唯一适合我的解决方案

AKSHAY MANAGOOLI 回复 42分钟 前

为我工作,谢谢

Seth 回复 42分钟 前

你可以试试clearFocus

0
sondt87 回答 42分钟 前

删除自动对焦edittext android
它对我有用
编辑在他们建议使用 LinearLayout 的链接中,但简单的 View 可以工作

<View
    android:id="@+id/focus_thief"
    android:layout_width="1dp"
    android:layout_height="1dp"
    android:focusable="true"
    android:focusableInTouchMode="true" />

然后,如果这个“小偷”被放置在布局的顶部(成为第一个可聚焦的项目)调用clearFocus()将工作。

Bill the Lizard 回复 42分钟 前

虽然这在理论上可以回答这个问题,最好是在此处包含答案的基本部分,并提供链接以供参考。

Bamerza 回复 42分钟 前

如果您的布局中有任何其他将采用 android:focusable=”true” 和 android:focusableInTouchMode=”true” 参数的视图,则不需要添加单独的“focus_thief”视图。只需将它们添加到上面的视图中(如果有的话)。

0
King of Masses 回答 42分钟 前

将这两个属性添加到您的父布局(例如:线性布局、相对布局)

android:focusable="true"
android:focusableInTouchMode="true"

它会做的伎俩:)

tintin21 回复 42分钟 前

最佳解决方案,无需添加新视图即可工作。谢谢

Utsav Gupta 回复 42分钟 前

这背后的基本逻辑是什么

JaydeepW 回复 42分钟 前

不要怀疑。 Android 有时会产生一些自己的创造者不理解的奇迹。

jzeferino 回复 42分钟 前

应该在上面。

Martin Marconcini 回复 42分钟 前

@UtsavGupta 底层(和不可预测的)逻辑/行为是,当焦点从视图中丢失时,android 会将其设置为视图层次结构中支持它的“第一个”视图。

Brian 回复 42分钟 前

非常简单的解决方案,你赢得了我的投票

Supun Liyanaarachchi 回复 42分钟 前

这个有效。谢谢

Luigi_Papardelle 回复 42分钟 前

这么简单,这么好。键盘被隐藏,所有视图在单击它们时都按预期工作。谢谢你。