我的活动顶部有一个搜索框(EditText
),下面是一个ListView。每当活动开始时,EditText始终具有焦点并调出部分覆盖ListView
的键盘。
没有其他文字视图可以有焦点。
我希望EditText只在用户触摸并开始输入时才有焦点。我尝试将clearFocus()
放入onCreateView
,onViewCreated
或onCreated
,但没有运气。
答案 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"