Разделитель ListView не виден

ListActivity использует расширение BaseAdapter и следующий макет:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:orientation="vertical"     
        android:background="@color/application_background_color">

<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:drawSelectorOnTop="false"
    android:divider="@drawable/divider"
    android:dividerHeight="2dip" android:clickable="true"
    android:choiceMode="singleChoice"    
    android:cacheColorHint="@color/application_background_color">
</ListView>

   </LinearLayout>

Он раздувает следующий макет для строк:

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

    <TextView android:id="@+id/Row" 
        android:layout_width="fill_parent" android:layout_height="50dip"
        android:textSize="20dip" android:textColor="#000000"
        android:layout_margin="8dip"
        android:gravity="center_vertical"></TextView>

    </LinearLayout>   

На данный момент drawable/divider.xml выглядит так, но я пробовал разные виды:

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="line">
      <stroke android:color="#FF000000">
      </stroke>
    </shape>    

Если я читаю рисунок с изображения, он работает. Почему это не работает, когда я определяю чертеж как файл .xml?

Обновление.
Код соответствует тому же шаблону, что и EfficientAdapter в примерах Android Developer:
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html


person Vanja    schedule 19.07.2011    source источник
comment
возможно причина в вашем адаптере. Просто попробуйте вернуть true в методе areAllItemsEnabled() вашего адаптера.   -  person grine4ka    schedule 16.08.2012


Ответы (2)


Код ниже работает для меня:

макет списка:

<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list"
    android:cacheColorHint="@android:color/transparent"
    android:background="@android:color/transparent"
    android:textFilterEnabled="false"
    style="@style/ListDivider"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</ListView>

стили.xml

<resources>
    <style name="ListDivider">
        <item name="android:divider">@drawable/my_shape</item>
        <item name="android:dividerHeight">5dp</item>
    </style>
</resources>

моя_форма:

    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <padding
            android:top="2dp"
            android:left="2dp"
            android:right="2dp"
            android:bottom="2dp" />
        <corners
            android:radius="5dp" />
        <solid
            android:color="@android:color/white" />
    </shape>
person pawelzieba    schedule 19.07.2011
comment
Спасибо, но это не сработало в моем коде. Это означает, что проблема, вероятно, связана с кодом, а не с XML-файлами. - person Vanja; 19.07.2011

Вот мой обходной путь для пунктирного разделителя:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="1dip">
        <shape android:shape="rectangle" >
            <solid android:color="#FF123243" />

            <stroke
                android:dashGap="5dp"
                android:dashWidth="8dp"
                android:width="1dp"
                android:color="#FFFFFFFF" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#FF000000" />
        </shape>
    </item>
</layer-list>

Просто убедитесь, что цвет второй фигуры «синхронизирован» с фоном списка и высотой разделителя.

person Paul Turchenko    schedule 13.04.2012