给LinearLayout加上花式分割线

本文介绍了一种避免使用drawable文件创建LinearLayout分割线的方法,通过自定义DividerLayout,实现通过属性直接指定分割线样式,包括颜色、大小和位置的控制。这种方法简化了代码,使得每个分割线都可以独立配置,并且支持LinearLayout的所有分割线功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给LinearLayout加上花式分割线

前言

写安卓的同学们应该都知道LinearLayout有一个分割线的功能,可以在子View间添加分割线或是给整个LinearLayout上下加上分割线,同时对于分割线的样式,可以通过自定义drawable的方式来实现,灵活度很高,但这种方式也让开发人员的编码变得非常痛苦。写安卓也有一段时间了,你要问我安卓开发的过程中,最不愿意面对的事情是什么,我想说就是打开我的drawable文件夹或是打开layout文件夹了… 对于一个简单的横线,我还是不太愿意定义一个drawable文件来解决这个问题,毕竟图多了不好找,我又不是HashMap! 所以今天来讨论下怎么去掉这个drawable文件的问题。

惯例上图

就问你花不花
最终通过继承LinearLayout的方式干掉了drawable文件,直接通过属性指定即可,同时还顺带做了分割线颜色尺寸位置的控制,每条分割线都可以单独控制,是不是很带劲

使用方式

自定义ViewGroup(DividerLayout)是LinearLayout的子类,它可以为每一个直接子View提供在其上下两侧绘制分割线的功能,你可以直接在每个子View中声明app:divider_top="true"或者app:divider_bottom="true" 来绘制某个子View的上下分割线
同时你可以通过:
app:divider_size="2px"
app:divider_color="@color/colorPrimary"
app:divider_padding_left="48dp"
app:divider_padding_right="48dp"
这四个选项来控制每一条分割线的颜色大小及padding。值得一说的是,如果这些属性被声明在DividerLayout中,这些属性将被作为默认属性应用到每一个子view中 但子view可以再次声明相关属性达到覆盖的效果

除了可以在子View上下添加分割线,整个DividerLayout也是支持在自己的上面或下面绘制分割线的 使用方式同子View一样依然是app:divider_top="true"或者app:divider_bottom="true",只不过把他写到DividerLayout中就可以了。

这样一来,整个DividerLayout就实现了全部的LinearLayout提供的分割线功能,同时,提供了更加细化和简单的控制方式,所以,请尽情享用它吧!

贴一下上面那张图的xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:background="#f0f0f0"
    android:layout_height="match_parent">

    <com.congxiaoyao.xber_admin.widget.XberDividerLayout
        app:divider_color="@color/colorPrimary"
        app:divider_size="2px"
        app:divider_bottom="true"
        android:layout_marginTop="8dp"
        android:orientation="vertical"
        android:background="#ffffff"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:textSize="17sp"
            android:gravity="center"
            app:divider_top="true"
            android:text="第一项" />
        <TextView
            app:divider_top="true"
            app:divider_padding_left="24dp"
            app:divider_padding_right="24dp"
            app:divider_color="#b44bb8"

            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:textSize="17sp"
            android:gravity="center"
            android:text="第二项" />

        <TextView
            app:divider_top="true"
            app:divider_padding_left="48dp"
            app:divider_padding_right="48dp"
            app:divider_color="#008d58"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:textSize="17sp"
            android:gravity="center"
            android:text="第三项" />

        <TextView
            app:divider_top="true"
            app:divider_padding_left="72dp"
            app:divider_padding_right="72dp"
            app:divider_color="#efb11f"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:textSize="17sp"
            android:gravity
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值