代码之家  ›  专栏  ›  技术社区  ›  Daim

为什么ListView不显示分隔符

  •  1
  • Daim  · 技术社区  · 9 年前

    对于这种特殊的情况,我使用默认的列表视图布局,我使用 ListFragment 。我在列表视图中显示分隔符时遇到问题。我使用下面的xml文件作为listview行格式。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center_vertical"
    android:background="@color/windowBackground"
    android:padding="2dp" >
    
           <RelativeLayout android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true" >
    
                <TextView android:id="@+id/tvtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@android:style/TextAppearance.Medium" />
    
                <TextView android:id="@+id/tvdescription"
                    android:layout_below="@id/tvtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@android:style/TextAppearance.Small" />
    
          </RelativeLayout>
    
          <!-- This is Supposed to be the divider -->
          <RelativeLayout
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:background="@drawable/shape" >
          </RelativeLayout>
    
    </RelativeLayout>
    

    第二个 RelativeLayout 正在使用 shape.xml 文件应该是分隔符。 Shape.xml 文件如下

    <?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
          android:shape="rectangle" >
    
        <corners android:radius="2px" />
        <stroke
            android:width="2px"
            android:color="@color/colorAccent" />
        <solid android:color="@color/colorPrimary"/>
    </shape>
    

    列表数据输出正常。我可以在这两种情况下看到数据 TextViews 但它没有显示除法器 相对布局 有背景的 @drawable/shape

    1 回复  |  直到 9 年前
        1
  •  0
  •   Netero    9 年前

    对,你可以像你那样在布局行中放置一个分隔符,但你必须纠正它

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center_vertical"
    android:background="@color/windowBackground"
    android:padding="2dp" >
    
           <RelativeLayout 
               android:id="@+id/row_id"
               android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true" >
    
                <TextView android:id="@+id/tvtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@android:style/TextAppearance.Medium" />
    
                <TextView android:id="@+id/tvdescription"
                    android:layout_below="@id/tvtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@android:style/TextAppearance.Small" />
    
          </RelativeLayout>
    
          <!-- This is Supposed to be the divider -->
          <RelativeLayout
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:layout_below="@id/row_id"
               android:layout_marginTop="5dp"
               android:layout_marginBottom="5dp"
               android:background="@color/yourColor" >
          </RelativeLayout>
    
    </RelativeLayout>
    

    或者更简单的方法是从除法中获取listView并在其上放置一个除法

    getListView().setDividerHeight(heightOfDivider);
    getListView().setDivider(yourDrawable);
    

    如果有任何问题,请留言

    祝你好运