
如上圖:新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 中可以通過控制后添加圖層距離最底部圖層的左上右下的四個邊距等屬性,得到不同的顯示效果。