43

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

没有其他文本视图可以具有焦点。我希望 EditText 仅在用户触摸它并开始输入时才具有焦点。我尝试clearFocus()输入onCreateView,onViewCreatedonCreated,但没有运气。

4

8 回答 8

115

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

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

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

于 2013-01-20T12:47:51.887 回答
5

您可以在容器视图上使用 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>
于 2017-01-26T09:19:26.363 回答
4

你必须<requestFocus>在你的 XML 中提到标签editTiext field删除它并再次运行

于 2013-01-20T12:46:58.053 回答
4

你可以试试这个:

editText.clearFocus();

您想在哪里清晰焦点。

于 2017-10-24T11:56:08.013 回答
2

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

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

于 2016-01-01T11:19:27.220 回答
0

这是EditText的答案,明确关注外部触摸

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

于 2013-01-20T12:48:37.663 回答
-1

试试这个

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

android:windowSoftInputMode="stateHidden"

当活动可见时,它将防止键盘弹出。

快乐编码:)

于 2013-01-20T12:46:28.053 回答
-3

这将完成您的工作:

android:windowSoftInputMode="stateHidden"

于 2014-03-26T18:39:51.897 回答