且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线

更新时间:2022-05-24 12:24:56

最近的项目中给ListView 加入了一个Header View之后,发现Header View的下方也有了分割线,很难看,UI要求将Header View的分割器去掉,好吧。现在就来说一说如何如何去除ListView中Header View中的分割线。

Header View中带分割线
【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线

Header View中不带分割线
【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线

Header View中要去掉的分割线
【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线

方法1

ListView的部分布局代码如下所示

<ListView
    android:id="@+id/ll_channel_list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@color/color_list_divider"
    android:dividerHeight="1px" />

先调用ListView的addHeaderView(View v, Object data, boolean isSelectable)方法添加Header View,注意第三个参数 isSelectable 必须为true,否则无效

然后调用ListView的setHeaderDividersEnabled(boolean headerDividersEnabled)方法设置Header View不显示分割线,代码如下所示:

    listView.addHeaderView(mHeader, null, true);
    //禁止头部出现分割线
    listView.setHeaderDividersEnabled(false);

顺便说一下:如果要去除ListView中Footer View中的分割线,也是类似的方法

先调用ListView的addFooterView(View v, Object data, boolean isSelectable)方法添加Footer View,注意第三个参数 isSelectable 必须为true,否则无效

然后调用ListView的setFooterDividersEnabled(boolean footerDividersEnabled)方法设置Footer View不显示分割线,代码如下所示:

 listView.addFooterView(mFooter, null, true);
 //禁止底部出现分割线 
 listView.setFooterDividersEnabled(false);

方法2

在ListView的布局文件中不设置分割线,如下所示:

<ListView
    android:id="@+id/ll_channel_list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@null" />

然后在item布局文件中加入一个view作为分割线,代码类似于如下所示:

<?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="wrap_content"
                android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/rl_item_program"
        android:layout_width="match_parent"
        android:layout_height="116dp"
        android:background="@drawable/bg_item_program_selector"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/iv_program_play_ico"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:gravity="center"
            android:src="@drawable/playing_anim"
            />

        <TextView
            android:id="@+id/tv_program_name"
            android:layout_width="wrap_content"
            android:layout_height="116dp"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@id/iv_program_play_ico"
            android:ellipsize="end"
            android:gravity="center_vertical"
            android:lineSpacingExtra="12dp"
            android:maxLines="2"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:text="abcdefghijklmnabcdefghijklmnabcdefghijklmn"
            android:textColor="@color/white"
            android:textSize="32dp"/>
    </RelativeLayout>

    <!--添加分割线-->
    <View
        android:layout_width="fill_parent"
        android:layout_height="1px"
        android:layout_below="@id/rl_item_program"
        android:background="@color/color_list_divider"/>
</RelativeLayout>

这样ListView就不会有分割线了,只是在内容区域有分割线,Header View和Footer View就不会再出现分割线。


作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/52749732

【我的Android进阶之旅】如何去除ListView中Header View、Footer View中的分割线