自定義Preference下劃線(Divider)樣式


如上圖:新UI要求將左圖 Preference 占滿全屏灰色的下劃線改為右圖前后有 margin 的樣式

方法:

首先我們需要找到加載 Preference 的 PreferenceFragment,然后在 onResume 方法中添加:

    @Override
    public void onResume() {
?       super.onResume();

?       ListView listView = this.getListView();
?       if (listView != null) {
?           listView.setDivider(getResources().getDrawable(R.drawable.divider_line));
?       }
    }

然后我們來看我們自定義的 divider_line 該如何繪制:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--底層使用透明填充色-->
    <item>
        <shape>
            <size
                android:width="320dp"
                android:height="1dp" />
            <solid android:color="@color/transparent" />
        </shape>
    </item>

    <!--然后覆蓋一層藍(lán)色填充色,這里的left、right相當(dāng)于margin,距離左右的間距-->
    <item
        android:left="20dp"
        android:right="20dp">
        <shape>
            <size
                android:width="280dp"
                android:height="1dp" />
            <solid android:color="#0000ff" />
        </shape>
    </item>
</layer-list>

這里的圖片繪制我們采用了 layer-list(layer-list 是用來創(chuàng)建圖層列表的,通過它能創(chuàng)建出一些特殊的 drawable;創(chuàng)建的LayerDrawable 是 DrawableResource 的一種)

PS:這里可以不用底層,這里只是為了展示 layer-list 的覆蓋作用

layer-list 的大致原理類似 RelativeLayout(或者FrameLayout) ,也是一層層的疊加 ,后添加的會覆蓋先添加的。在 layer-list 中可以通過控制后添加圖層距離最底部圖層的左上右下的四個邊距等屬性,得到不同的顯示效果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容