如何清除EditText的焦点?

问题描述 投票:36回答:8

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

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

android android-edittext
8个回答
107
投票

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

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

现在,当activity开始这个布局获得默认焦点。

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

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

要么

查看AndroidManifest.xml元素。

android:windowSoftInputMode="stateHidden"

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


4
投票

您必须在XML中的<requestFocus>中提到editTiext field标记,然后再次运行


3
投票

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

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

2
投票

你可以试试这个:

editText.clearFocus();

你想要清除焦点的地方。


1
投票

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

android:id="@+id/linearLayout7" android:layout_width="fill_parent"

android:layout_height="wrap_content"

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

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


0
投票

这是答案EditText, clear focus on touch outside

或者您可以编写仅使用textView显示文本的小部件,并使用onClick显示EditText的对话框,您可以在其中编辑此文本/


-1
投票

试试这个

ActivityAndroidManifest.xml宣言中添加以下代码:

android:windowSoftInputMode="stateHidden"

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

快乐编码:)


-3
投票

这将做你的工作:

android:windowSoftInputMode="stateHidden"

© www.soinside.com 2019 - 2024. All rights reserved.