一.基本使用
LinearLayoutCompat主要作用就是為里面的子View添加分割線姑原,它有三個(gè)基本屬性。
app:divider="":分割線奴迅,類型Drawable;
app:dividerPadding="":分割線的左右內(nèi)邊距赏寇;
device-2019-12-04-231706.png
二.實(shí)現(xiàn)左右邊距不等的分割線
device-2019-12-04-232526.png
device-2019-12-04-232526.png
app:dividerPadding="8dp"設(shè)置的是左右邊距都等于8dp丁屎,如要實(shí)現(xiàn)上圖的需求則需要從drawable入手荠锭,可以選擇使用inset修改Drawable左右邊距。
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="56dp"
android:insetRight="8dp">
<shape android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="#000" />
</shape>
</inset>
三.指定子View添加分割線
device-2019-12-04-233500.png
上圖為前兩個(gè)Item底部不添加分割線的效果晨川,此時(shí)可以選擇繼承LinearLayoutCompat類证九,并重寫hasDividerBeforeChildAt這個(gè)方法,可以在這個(gè)方法里面去控制共虑。
public class MyLinearLayoutCompat extends LinearLayoutCompat {
public MyLinearLayoutCompat(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected boolean hasDividerBeforeChildAt(int childIndex) {
int showDividers = getShowDividers();
if (childIndex == 0) {
return (showDividers & 1) != 0;
} else if (childIndex == this.getChildCount()) {
return (showDividers & 4) != 0;
} else if ((showDividers & 2) == 0) {
return false;
} else {
boolean hasVisibleViewBefore = false;
for (int i = childIndex - 1; i > 1; --i) {
if (getChildAt(i).getVisibility() != GONE) {
hasVisibleViewBefore = true;
break;
}
}
return hasVisibleViewBefore;
}
}
}
在循環(huán)里面i > 1就是從三個(gè)子View開始hasVisibleViewBefore=true愧怜。
四.漸變色分割線
device-2019-12-04-234244.png
可以寫一個(gè)shape并對(duì)shape添加gradient屬性:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="#000" />
<gradient
android:endColor="@color/colorPrimary"
android:startColor="@color/colorAccent"
android:type="linear" />
</shape>
其他的很多分割線樣式都可以通過設(shè)置shape的屬性進(jìn)行實(shí)現(xiàn),如圓角妈拌、分割線高度等拥坛,如果碰到需要實(shí)現(xiàn)更加復(fù)雜的樣式,還可以使用圖片尘分。