如何更改Android ListView分隔线的颜色?

UMA*_*MAR 393 android android-listview

我想改变ListView分隔线的颜色.任何帮助,将不胜感激.

Jer*_*rth 762

您可以使用布局xml文件中的此值设置android:divider="#FF0000".如果要更改颜色/可绘制,则还必须设置/重置分隔符的高度.

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

  <ListView 
    android:id="@+id/android:list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:divider="#FFCC00"
    android:dividerHeight="4px"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

  • 如果你用XML做,请确保使用android:dividerHeight查看高度,否则你将得不到任何行 (62认同)
  • 我不建议使用`px`单位在Android中定义大小,而是使用`dp` (44认同)
  • 在这种特定情况下,似乎可能有充分的理由使用px.请参阅:http://stackoverflow.com/a/12061612/10505 (12认同)
  • 您还应该能够在`android:divider`中指定`Drawable`资源.现有的分隔符是渐变. (11认同)
  • 根据我的经验,读"应该重置分频器的高度"到"必须设置分频器的高度" (8认同)

小智 160

或者你可以编码:

int[] colors = {0, 0xFFFF0000, 0}; // red for the example
myList.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
myList.setDividerHeight(1);
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你


hta*_*oya 86

对于单色线使用:

list.setDivider(new ColorDrawable(0x99F10529));   //0xAARRGGBB
list.setDividerHeight(1);
Run Code Online (Sandbox Code Playgroud)

重要的是DividerHeight设置在分隔符之后,否则你将得不到任何东西.

  • 关于操作顺序的非常有用的评论.我花了2个小时试图让它工作.不错的设计,Android. (3认同)

小智 11

您还可以使用以下方法从资源中获取颜色:

dateView.setDivider(new ColorDrawable(_context.getResources().getColor(R.color.textlight)));
dateView.setDividerHeight(1);
Run Code Online (Sandbox Code Playgroud)


小智 10

适用于@Asher Aslan的XML版酷炫效果.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient
        android:angle="180"
        android:startColor="#00000000"
        android:centerColor="#FFFF0000"
        android:endColor="#00000000"/>

</shape>
Run Code Online (Sandbox Code Playgroud)

该形状的名称为:drawable文件夹下的list_driver.xml

<ListView
        android:id="@+id/category_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:divider="@drawable/list_driver"
        android:dividerHeight="5sp" />
Run Code Online (Sandbox Code Playgroud)


Aj *_* 27 6

有两种方法可以做同样的事情:

  1. 您可以在布局xml文件中设置android:divider ="#FFCCFF"的值.有了这个,你还必须指定分隔符的高度,如这个android:dividerHeight ="5px ".

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
      <ListView 
      android:id="@+id/lvMyList"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:divider="#FFCCFF"
      android:dividerHeight="5px"/>
    
    </LinearLayout>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您也可以通过编程方式执行此操作...

    ListView listView = getListView();
    ColorDrawable myColor = new ColorDrawable(
        this.getResources().getColor(R.color.myColor)
    );
    listView.setDivider(myColor);
    listView.setDividerHeight();
    
    Run Code Online (Sandbox Code Playgroud)