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