EditText не отображает введенный текст во второй раз на Android 2.2 - PullRequest
0 голосов
/ 23 января 2012

У меня есть EditText, который содержится в ListView.Обычно это работает как надо, так как я установил android:descendantFocusability="afterDescendants", чтобы позволить пользователю фокусировать EditText для ввода текста.

На устройствах под управлением Android 2.2 существует проблема, которая выглядит следующим образом:

  • Пользователь нажимает для редактирования текста, вводит текст
  • Пользователь закрывает программную клавиатуру (с этого момента введенный текст исчезает)
  • Пользователь снова нажимает на редактирование текста и пытаетсявведите текст - текст не отображается (текст подсказки отображается)
  • Если пользователь затем отклоняет клавиатуру и нажимает текст редактирования в третий раз, текст, который был введен ранее, но не появился, теперь будет видимым

Это происходит на двух разных устройствах 2.2, но не происходит на Galaxy Nexus под управлением 4.0.1 и не происходит на эмуляторе.

Вот макет 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>

Вот список, который содержит приведенный выше макет в виде строки:

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 голосов
/ 06 июня 2012

нет необходимости менять адаптер, просто введите код, показанный ниже: ((InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE)). ToggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY *;

...