Отсутствующие разделительные строки в представлении списка Android

#android #android-listview

#Android #android-listview

Вопрос:

Я создаю приложение с несколькими элементами списка на главном экране. Конфигурация главного экрана выглядит следующим образом:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:weightSum="1">
<ImageView android:id="@ id/home_header" android:src="@drawable/home_header"
    android:layout_width="fill_parent" android:layout_height="wrap_content"></ImageView>

<LinearLayout android:layout_width="match_parent"
    android:layout_height="wrap_content" android:orientation="vertical"
    android:layout_gravity="top" android:id="@ id/HomeOptions">
    <!-- android:textFilterEnabled="true" -->
    <ListView android:id="@ id/HomeOptionsList"
        android:layout_width="fill_parent" android:layout_height="wrap_content">
    </ListView>
</LinearLayout>
  

Конфигурация элемента списка выглядит следующим образом:

 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" android:weightSum="1">

<TableRow android:id="@ id/listItem" android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView android:id="@ id/icon" src="@drawable/icon"
        android:layout_width="wrap_content" android:layout_height="match_parent" />
    <TextView android:id="@ id/chat_type" android:textStyle="normal"
        android:paddingTop="12dp" android:paddingLeft="5dp"
        android:layout_width="wrap_content" android:layout_height="match_parent" android:textSize="20px"/>
    <ImageView android:id="@ id/home_msg_notification_icon" src="@drawable/message_recieved" android:paddingLeft="50dp"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:layout_gravity="right" />
    <!-- <ImageView android:id="@ id/error_notification_icon" src="@drawable/warning_icon" android:paddingLeft="50dp"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:layout_gravity="right" /> -->
</TableRow>
  

На экране вывода возникает странная проблема: он не показывает разделительные строки для нескольких элементов. Когда я пытаюсь перетащить элемент списка, разделительные линии появляются, а затем исчезают. Я приложил снимок экрана, чтобы вы могли посмотреть.

Нажмите здесь

Комментарии:

1. Этот вопрос в группах Google может быть интересным (особенно в последнем сообщении).

Ответ №1:

На устройствах с низким разрешением (320×240, таких как HTC wildfire) разделитель списка отображается не всегда. Один и тот же разделитель может появляться и исчезать во время прокрутки.

Я исхожу из приближения размера к высоте разделителя.

В ListView высота разделителя по умолчанию равна размеру выводимого разделителя, высота 1px как я вижу в исходном коде Android, на устройстве с низким разрешением он отображается по неизвестной причине как 1px или 0px. Разделитель исчезает, когда размер округляется до 0 пикселей.

Чтобы убедиться, что он отображается правильно на всех устройствах, я обычно определяю разделитель в пикселях, например:

 android:dividerHeight="1px"
  

Ответ №2:

mListView.setDividerHeight(1);

если вы используете 0,5dip на старых устройствах, он не отображается