美文网首页
自定义Preference下划线(Divider)样式

自定义Preference下划线(Divider)样式

作者: trythinking | 来源:发表于2018-05-09 16:56 被阅读41次

    如上图:新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>
    
        <!--然后覆盖一层蓝色填充色,这里的left、right相当于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 是用来创建图层列表的,通过它能创建出一些特殊的 drawable;创建的LayerDrawable 是 DrawableResource 的一种)

    PS:这里可以不用底层,这里只是为了展示 layer-list 的覆盖作用

    layer-list 的大致原理类似 RelativeLayout(或者FrameLayout) ,也是一层层的叠加 ,后添加的会覆盖先添加的。在 layer-list 中可以通过控制后添加图层距离最底部图层的左上右下的四个边距等属性,得到不同的显示效果。

    相关文章

      网友评论

          本文标题:自定义Preference下划线(Divider)样式

          本文链接:https://www.haomeiwen.com/subject/ckkorftx.html