我有一个活动,顶部有一个搜索框(EditText
),下面是一个ListView。每当活动开始时,EditText始终具有焦点并调出部分覆盖ListView
的键盘。
没有其他文本视图可以有焦点。我希望EditText只在用户触摸并开始输入时才有焦点。我试着把clearFocus()
放在onCreateView
,onViewCreated
或onCreated
,但没有运气。
在父布局中设置下一个属性:
<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"
进入活动时始终隐藏键盘。
您必须在XML中的<requestFocus>
中提到editTiext field
标记,然后再次运行
您可以在容器视图上使用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>
你可以试试这个:
editText.clearFocus();
你想要清除焦点的地方。
在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">
我想,它应该对你有帮助。
这是答案EditText, clear focus on touch outside。
或者您可以编写仅使用textView显示文本的小部件,并使用onClick
显示EditText
的对话框,您可以在其中编辑此文本/
试试这个
在Activity
的AndroidManifest.xml
宣言中添加以下代码:
android:windowSoftInputMode="stateHidden"
当活动变得可见时,它将阻止键盘弹出。
快乐编码:)
这将做你的工作:
android:windowSoftInputMode="stateHidden"