У меня есть 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>