在我的布局中添加ListView
时,我遇到了一个奇怪的问题。
我的布局包含2 EditText
,当我开始活动时,键盘不会自动弹出。但是当我在布局中的任何地方添加ListView
时,键盘会在活动开始时弹出。
我知道有很多方法可以像这样隐藏键盘:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
您可能已经看到了here和here等问题的其他解决方案,但我的问题不是如何为了防止这种情况, 为什么 会发生这种情况?
我创建了一个演示此行为的简单示例
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="chadi.projects.code.TestKeyboardActivity" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@android:color/white" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" />
</LinearLayout>
如果此ListView
不存在,则键盘不会显示。如果我将其他视图替换为ListView
,则仍然无法显示。只有当我添加一个简单的ListView
(甚至没有任何东西填充它)时,才会出现keboard。
为什么 会发生这种情况?
答案 0 :(得分:1)
在清单文件上试试这个
<activity
android:name=".MyActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="stateHidden" />
答案 1 :(得分:0)
为此您必须将请求焦点添加到编辑文本中 像这样
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@android:color/white">
<requestFocus />
</EditText>