EditText无法在Android 2.2上第二次显示输入的文本

时间:2012-01-23 18:22:36

标签: android android-listview android-edittext

我有EditText,其中包含ListView。一般来说,这应该是正常的,因为我已设置android:descendantFocusability="afterDescendants"以使用户能够聚焦EditText以输入文本。

在运行Android 2.2的设备上,存在如下问题:

  • 用户点按编辑文字,输入文字
  • 用户关闭软键盘(此时输入的文字消失)
  • 用户点击再次编辑文本,尝试输入文字 - 文本不显示(提示文字可见)
  • 如果用户随后解除键盘并第三次点击编辑文本,则之前输入但未显示的文本现在将显示

这发生在两个不同的2.2设备上,但在运行4.0.1的Galaxy Nexus上不会发生,也不会在模拟器上发生。

这是包含编辑文本的XML布局:

search_bar.xml     

<RelativeLayout
    android:id="@+id/search_section"
    android:layout_width="fill_parent"
    android:layout_height="@dimen/search_bar_height" >

    <ImageView
        android:id="@+id/search_bar_bg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/searchbarbg" />

    <EditText     <!-- This is the EditText in question -->
        android:id="@+id/search_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/searchfieldbg"
        android:hint="@string/search_view_hint" />

    <ImageView
        android:id="@+id/scan_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/scan_button" />
</RelativeLayout>

<ImageView
    android:id="@+id/search_bar_shadow"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/search_section"
    android:background="@drawable/shadowtop" />

</RelativeLayout>

这是listview,其中包含上面的布局:

browse_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/main_bg" >

<ListView
    android:id="@+id/categories_list_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:descendantFocusability="afterDescendants"
    android:divider="@null"/>

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

无需更改适配器只需输入如下所示的代码: ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))。toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);