为什么在添加ListView时会弹出Android键盘

时间:2015-05-14 07:34:48

标签: android listview android-softkeyboard

在我的布局中添加ListView时,我遇到了一个奇怪的问题。

我的布局包含2 EditText,当我开始活动时,键盘不会自动弹出。但是当我在布局中的任何地方添加ListView时,键盘会在活动开始时弹出。

我知道有很多方法可以像这样隐藏键盘:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)您可能已经看到了herehere等问题的其他解决方案,但我的问题不是如何为了防止这种情况, 为什么 会发生这种情况?

我创建了一个演示此行为的简单示例

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

为什么 会发生这种情况?

2 个答案:

答案 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>