android经验积累andnroidAndroid开发

ListView/RecyclerView/ScrollView

2016-09-09  本文已影响3804人  ZhanChiFF

前段时间项目中用到了ListView,做出来后看效果,发现ListView原生的scrollbar是这样的:

图1

看上去很low的感觉,和项目整体的风格格格不入。于是想反办法将其改掉。
通过查看View属性,决定scrollbar的属性是android:scrollbarThumbVertical,这个属性是存在于View当中的,也就是说所有View,ViewGroup都能设置scrollbar。
好了,废话不多说,直接上效果图:

图2

再来看达到这个效果所需要的代码,在布局中:

<ListView 
android:id="@+id/test_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarThumbVertical="@drawable/my_bar"/>

再来看drawable目录下的my_bar.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#999999"/>    <!--设置颜色-->
<size android:width="4dp"/>  <!--设置宽度-->
</shape>

这么简单就实现啦!
什么?没有边框?没有圆角?
那么加上就是了,不就是个属性嘛:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#999999"/>
<size android:width="4dp"/>
<corners android:radius="2dp"/>
<stroke android:color="#111111"  android:width="2px"/>
</shape>

再来看看效果:


图3

我们再来和系统原生的scrollbar比较比较,发现原生的和右边边界有1px或2px的距离,而我们自定义的和右边是挨着的(在本文的图片中不好看出来,在真实的手机上能明显看到)。那么怎样才能达到那样的效果呢?
经过艰苦查找,终于发现了解决方法,将my_bar.xml稍作修改即可:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="5dp">
<shape>
<solid android:color="#999999"/>
<corners android:radius="2dp"/>
<stroke android:color="#111111"    android:width="2px"/>
<size android:width="4dp"/>
</shape>
</item>
</layer-list>

来看看效果图:

图4

什么?感觉太远?那自己改一下数值大小就行:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="1dp">
<shape>
<solid android:color="#999999"/>
<corners android:radius="1dp"/>
<stroke android:color="#111111"    android:width="1px"/>
<size android:width="2dp"/>
</shape>
</item>
</layer-list>

再看看效果:

是不是很有IOS风,_

上一篇下一篇

猜你喜欢

热点阅读