如何清除EditText的焦点?

时间:2013-01-20 12:42:52

标签: android android-edittext

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

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

8 个答案:

答案 0 :(得分:106)

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

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

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

答案 1 :(得分:4)

您必须在XML中<requestFocus>中提及editTiext field标记,然后重新运行

答案 2 :(得分: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>

答案 3 :(得分:2)

你可以试试这个:

editText.clearFocus();

你想要清除焦点的地方。

答案 4 :(得分:1)

添加android:focusable =&#34; true&#34;和android:focusableInTouchMode =&#34; true&#34; EditText的父布局中的元素如下;

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

android:layout_height="wrap_content"

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

我认为,它可以帮到你。

答案 5 :(得分:0)

以下是答案EditText, clear focus on touch outside

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

答案 6 :(得分:-1)

试试这个

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

android:windowSoftInputMode="stateHidden"

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

快乐编码:)

答案 7 :(得分:-3)

这将完成你的工作:

android:windowSoftInputMode="stateHidden"