У меня есть ListView
, где я определил макет каждого элемента в отдельном файле XML. В этом файле я включил RatingBar
и EditText
.
Я программно создал 7-8 элементов в этом ListView
. Когда я прокручиваю их, кажется, что это довольно багги. Вот несколько примеров:
-
Если я устанавливаю фокус на
EditText
в первой строке, а затем прокручиваю внизListView
, случайныйEditTexts
из других строк будет иметь фокус. Похоже, что следующийEditText
после того, как сфокусированный исчезает, получает фокус. Возможно, это намеренно, но, как пользователь, кажется очень странным. -
Если я устанавливаю фокус на
EditText
, получаю виртуальную клавиатуру, набираю что-то и нажимаю кнопку "Готово" на своей виртуальной клавиатуре,EditText
будет пуст, как только виртуальная клавиатура исчезнет. -
Иногда, когда я нажимаю
EditText
, получаю виртуальную клавиатуру и начинаю печатать буквы, буквы исчезают, как только я их набираю. -
Когда я нажимаю на
EditText
, виртуальная клавиатура показывает себя, ноEditText
теряет фокус, и мне нужно снова нажатьEditText
. -
Даже если я установил
RatingBar
вfocusable="false"
, если я перемещаю свое колесо прокрутки, оно все еще захватывает фокус.
Одна из моих проблем - все видимые элементы списка получают перерисовываться, когда я набираю символ на виртуальной клавиатуре (а так как текст EditText
установлен на некоторые данные, который пуст, он очищается. Не понимаю, почему Android решит перерисовать список при каждом вводе символа.
Вот XML, который я использую для их рисования. Это белые пузырьки с серым бордюром и некоторый текст, RatingBar
и EditText
внутри:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="15dip"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_outer">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_inner">
<TextView
android:id="@+id/rating_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/dark_gray"
android:textStyle="bold"
android:layout_marginBottom="10dip" />
<RatingBar
android:id="@+id/rating_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="0"
android:stepSize="1"
android:focusable="false"
android:clickable="false"
/>
<EditText
android:id="@+id/rating_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:padding="6dip"
android:textColor="#000000"
android:gravity="left|top"
android:lines="3"
android:hint="Comment"
android:imeOptions="actionDone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>