Android ListView 滚动条的设置详解

1.滚动条的属性

android:scrollbarAlwaysDrawHorizontalTrack

设置是否始终显示水平滚动条。这里用ScrollView、ListView测试均没有效果。

android:scrollbarAlwaysDrawVerticalTrack

设置是否始终显示垂直滚动条。这里用ScrollView、ListView测试均没有效果。

android:scrollbarDefaultDelayBeforeFade

设置N毫秒后开始淡化,以毫秒为单位。

android:scrollbarFadeDuration

设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位。Android2.2中滚动条滚动完之后会消失,再滚动又会出来,在1.5、1.6版本里面会一直显示着。

android:scrollbarSize

设置滚动条的宽度。

android:scrollbarStyle

设置滚动条的风格和位置。设置值:insideOverlay、insideInset、outsideOverlay、outsideInset。这里没有试出太多效果,以下依次是outsideOverlay与outsideInset效果比较:

android:scrollbarThumbHorizontal

设置水平滚动条的drawable(如颜色)。

android:scrollbarThumbVertical

设置垂直滚动条的drawable(如颜色).

android:scrollbarTrackHorizontal

设置水平滚动条背景(轨迹)的色drawable(如颜色)

android:scrollbarTrackVertical

设置垂直滚动条背景(轨迹)的drawable注意直接设置颜色值如”android:color/white”将得出很难看的效果,甚至都不理解这个属性了,这里可以参见ApiDemos里res/drawable/ scrollbar_vertical_thumb.xml和scrollbar_vertical_track.xml,设置代码为:

android:scrollbarTrackVertical ="@drawable/scrollbar_vertical_track"

android:scrollbars

设置滚动条显示。none(隐藏),horizontal(水平),vertical(垂直)。见下列代码演示使用该属性让EditText内有滚动条。但是其他容器如LinearLayout设置了但是没有效果

android:fastScrollEnabled

设置是否以滑块的形式显示(但是有时候会发现设置属性无效,滚动ListView并未出现滑块。原因是该属性生效有最小记录限制。当ListView记录能够在4屏以内显示(也就是说滚动4页)就不会出现滑块。可能是api设计者认为这么少的记录不需要快速滚动。)

2.问题注意

注意:可能是适配的原因,可能你设置了scrollbarSize看不多效果,但是如果你配置scrollbarThumbVertical使用就可以看到

@color/white

#00000000

@color/white

10dip

none

@dimen/DIMEN_4PX_DP

@color/red_common

true

#00000000

3.如何修改滑块的样式

依据是Android源代码,见FastScroller的常量声明:

// Minimum number of pages to justify showing a fast scroll thumb

private static int MIN_PAGES = 4;

以及:

// Are there enough pages to require fast scroll? Recompute only if total count changes

if (mItemCount != totalItemCount && visibleItemCount > 0) {

mItemCount = totalItemCount;

mLongList = mItemCount / visibleItemCount >= MIN_PAGES;

}

通篇查看了ListView及其超累AbsListView,都未找到自定义图片的设置接口。看来是没打算让开发者更改了。但是用户要求我们自定义这个图片。那只能用非常手段了。

经过分析发现,该图片是ListView超类AbsListView的一个成员mFastScroller对象的成员mThumbDrawable。这里mThumbDrawable是Drawable类型的。mFastScroller是FastScroller类型,这个类型比较麻烦,类的声明没有modifier,也就是default(package),只能供包内的类调用。

因此反射代码写的稍微麻烦一些:

try {

Field f = AbsListView.class.getDeclaredField("mFastScroller");

f.setAccessible(true);

Object o=f.get(listView);

f=f.getType().getDeclaredField("mThumbDrawable");

f.setAccessible(true);

Drawable drawable=(Drawable) f.get(o);

drawable=getResources().getDrawable(R.drawable.icon);

f.set(o,drawable);

Toast.makeText(this,f.getType().getName(),1000).show();

} catch (Exception e) {

throw new RuntimeException(e);

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android 设置listview滚动条,Android ListView 滚动条的设置详解及实例代码相关推荐

  1. Android为spinner设置适配器,Android Spinner与适配器模式详解及实例代码

    最近做项目对Android Spinner 使用,这里简单写个小例子,来测试如何使用. Spinner 是一个下拉列表,往安卓界面中拖拽一个Spinner控件,在属性中设置Android:entrie ...

  2. android message 代码,Android Handler移除Message详解及实例代码

    Android Handler移除Message详解 问题: 1.removeMessage(what)函数是否只能移除对应what值的Message? 2.对于Delayed发送的Message,能 ...

  3. Android 轻松实现语音识别详解及实例代码

    使用Intent调用语音识别程序 说明 Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到语音识别设备,就会抛出异常 ActivityNotFou ...

  4. android xutils json请求,Android Xutils3网络请求的封装详解及实例代码

    Xutils3网络请求的封装详解 封装了一个Xutil3的网络请求工具类,分享给大家,本人水平有限,不足之处欢迎指出. 使用前先配置xutils3: 1.gradle中添加 compile 'org. ...

  5. input组件android,React-Native TextInput组件详解及实例代码

    同时适配Android和IOS 代码注释比较详细 /** * Sample React Native App * https://github.com/facebook/react-native * ...

  6. android sim卡分析,Android 判断SIM卡属于哪个移动运营商详解及实例

    Android 判断SIM卡属于哪个移动运营商 第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (Telephon ...

  7. android 动态水球,Canvas 制作动态进度加载水球详解及实例代码

    Canvas 动态进度加载水球 前言 之前看到一些球型的动态加载的效果,一直想自己动手做一个,正好这段时间重温了一个Canvas,所以就尝试了一下. 实现思路 关于水波的实现,使用了sin()函数,通 ...

  8. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

  9. Android APP:Preference使用详解和实例(附源码)

    Android APP:Preference使用详解和实例 一.Preference 是Android app中重要的控件之一,Settings 模块大部分都是通过Preference 实现的,这里将 ...

最新文章

  1. c#:使用using关键字自动释放资源未必一定就会有明显好处
  2. C# Socket与实现
  3. 本地化中文示例代码需求调查
  4. 在MySQL 5.7下排查内存泄露和OOM问题全过程
  5. Blazor+Dapr+K8s微服务之服务调用
  6. QT--QDockWidget 停靠窗口
  7. java访问数据库视图_java 访问数据库视图
  8. java 发卡器_充值发卡器
  9. iis服务器版本信息泄漏,IIS短文件和文件夹泄漏漏洞
  10. access汇总含义_access的用法总结大全
  11. 【261期】为什么 BigDecimal 类不能使用 equals() 方法做等值比较?
  12. ios 渐变透明背景_利用PS绘制唯美梦幻多边形背景图
  13. unity退出,从新开始,暂停
  14. 贫民窟里的WPF系列讲座(二)
  15. windows卸载夸克网盘没有卸载干净
  16. Django连接mysql数据库操作
  17. 理论物理极础8:哈密顿力学和时间平移不变性
  18. 大数据和云计算技术周报(第115期)
  19. 会考flash中文字变形为三角形_高中会考flash
  20. OFweek 2019 智能网联汽车发展高峰论坛在深圆满落幕!

热门文章

  1. 献给和我一样的Java初学者——用UltraEdit代替“笨重”的IDE,实现轻巧编程!
  2. springboot + poi 解析 excel
  3. 在线自动播放快手小姐姐源码
  4. 电脑桌面护眼色调配方案
  5. MFC界面控件BCGControlBar v33.4 - 日历、属性网格组件升级
  6. 阴阳师服务器维护2月20,阴阳师2月20日更新了什么 正式服更新内容总结
  7. WEB3.0定义与未来发展趋势
  8. 飞歌viper4android,【图片】求大佬支招!!本人车机,飞歌G6S二代,安卓版本4.2.2,已root,busybox已安装。Z4A版本2【viper4android吧】_百度贴吧...
  9. mysql ocp 认证 题库_Mysql 8.0 OCP认证考试原题整理(CUUG内部题库)-第4题
  10. 弹弹岛2服务器维护,《弹弹岛2》更新公告 幻化系统梦幻登场