关于android:如何清除EditText的焦点?

How to clear focus for EditText?

我有一个活动,顶部有一个搜索框(EditText),下面是一个ListView。 每当活动开始时,EditText始终具有焦点并调出部分覆盖ListView的键盘。

没有其他文本视图可以有焦点。
我希望EditText只在用户触摸并开始输入时才有焦点。 我尝试将clearFocus()放在onCreateViewonViewCreatedonCreated中,但没有运气。


在父布局中设置下一个属性:

1
2
3
4
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true">

而现在,当Activity启动此布局时会获得默认焦点。

我们也可以在运行时从子视图中删除焦点(例如在完成子编辑后):

1
findViewById(R.id.mainLayout).requestFocus();

要么

查看AndroidManifest.xml元素。

1
android:windowSoftInputMode="stateHidden"

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


您必须在XML中的editTiext field中提及标记,然后再次运行


您可以在容器视图上使用set focus。添加到容器android:focusableInTouchMode ="true",android:focusable ="true"和标记requestFocus示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<RelativeLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true"
    android:focusable="true">
    <requestFocus/>

    <EditText
        android:id="@+id/edit_text_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</RelativeLayout>

你可以试试这个:

1
editText.clearFocus();

你想要清除焦点的地方。


在EditText的父布局中添加android:focusable ="true"和android:focusableInTouchMode ="true"元素,如下所示;

1
2
3
4
5
android:id="@+id/linearLayout7" android:layout_width="fill_parent"

android:layout_height="wrap_content"

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

我想,它应该对你有帮助。


这是EditText的答案,明确注重外界的触摸。

或者您可以编写仅显示带有textView的文本的窗口小部件,onClick将显示带有EditText的对话框,您可以在其中编辑此文本/


试试这个

AndroidManifest.xml中的Activity声明中添加以下代码:

1
android:windowSoftInputMode="stateHidden"

当活动变得可见时,它将阻止键盘弹出。

快乐编码:)


这将做你的工作:

android:windowSoftInputMode="stateHidden"