【Android控件】HorizontalScrollView的基础使用记录(滚动条自定义)

2023-05-16

目录​​​​​​​

效果图

简介

注意事项

基础属性

滚动条全部设置

滚动条是否总显示

自定义滚动条滑动背景和滚动条背景

设置滚动条的宽度

设置滚动条距离

其它常规设置

设置滚动速度

布局代码示例

总结


效果图

简介

HorizontalScrollView是水平滚动标签。垂直滚动动是 ScrollView标签

HorizontalScrollView用于布局的容器,可以放置让用户使用滚动条查看的视图层次结构,允许视图结构比手机的屏幕大。HorizontalScrollView是一种 FrameLayout(框架布局),其子项被滚动查看时是整体移动的,并且子项本身可以是一个有复杂层次结构的布局管理器。一个常见的应用是子项在水平 方向中,用户可以滚动显示顶层水平排列的子项(items)。

很适合用场景、图片无限滑动,底部多个自定义按钮布局(支持递增)等

注意事项

  • HorizontalScrollView只支持水平方向的滚动显示
  • ScrollView和HorizontalScrollView的子元素只能有一个,所以可以增加一个LinearLayout布局,把其他按键什么的放在这个LinearLayout中,那么ScrollViewd的子元素就只有一个LinearLayout了,而LinearLayout的子元素不限制。
  • 不可以和ListView同时用, 因为ListView有自己的滚动条设置。最重要的是,如果在需要显示很大的list的情况下,两者同时用则会使ListView在一些重要的优化上失 效。出现这种失效的原因在于,HorizontalScrollView会强迫ListView用HorizontalScrollView本身提供的空 间容器(infinite container)来显示完整的列表。
  • TextView也有自己的滚动条,所以不需要ScrollView。但这两者是可以同时使用的,使用的结果会是在一个更大的容器里显示文本视图。

基础属性

scrollbars
设置滚动条显示:none(隐藏),horizontal(水平),vertical(垂直)。


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


scrollbarSize
设置滚动条的宽度。


scrollbarStyle
设置滚动条的风格和位置。设置值:insideOverlay、insideInset、outsideOverlay、outsideInset


scrollbarThumbHorizontal
设置水平滚动条的drawable。


scrollbarThumbVertical
设置垂直滚动条的drawable.


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


soundEffectsEnabled
设置点击或触摸时是否有声音效果


fadeScrollbars
滚动条是否总显示:false总显示,true自动隐藏

overScrollMode
滑动模式共有3个:
never
setOverScrollMode(View.OVER_SCROLL_NEVER)
设置此模式,滑到边界后继续滑动也不会出现弧形光晕
always
setOverScrollMode(View.OVER_SCROLL_ALWAYS)
设置此模式,滑到边界后继续滑动也总是会出现弧形光晕
ifContentScrolls
setOverScrollMode(View.OVER_SCROLL_IF_CONTENT_SCROLLS)
设置此模式,如果recycleview里面的内容可以滑动,那么滑到边界后继续滑动会出现弧形光晕;如果recycleview里面的内容不可以滑动,那么滑到边界后继续滑动不会出现弧形光晕.
 

滚动条全部设置

滚动条是否总显示

false总显示,true自动隐藏

自定义滚动条滑动背景和滚动条背景

滚动条滑动背景设置:
android:scrollbarThumbHorizontal= "@drawable/shape_main_bottom_scroll_bar"
shape_main_bottom_scroll_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/white" />
    <corners android:radius="360dp" />
</shape>

滚动条背景设置:
android:scrollbarTrackHorizontal="@drawable/shape_main_bottom_scroll_bg_bar"
shape_main_bottom_scroll_bg_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#357AD5" />
    <corners android:radius="360dp" />
</shape>

设置滚动条的宽度

android:scrollbarSize="6dp"

设置滚动条距离

利用HorizontalScrollView里的paddingBottom或是其控件高度(layout_height)、layout_marginTop等灵活使用时间距离控制

其它常规设置

设置滚动速度

这个并没有给我们提供可以直接设置的方法,我们需要自己继承ScrollView,然后重写一个 public void fling (int velocityY)的方法:

@Override
public void fling(int velocityY) {
    super.fling(velocityY / 2);    //速度变为原来的一半
}

布局代码示例

<HorizontalScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbarThumbHorizontal= "@drawable/shape_main_bottom_scroll_bar"
                android:scrollbarTrackHorizontal="@drawable/shape_main_bottom_scroll_bg_bar"
                android:fadeScrollbars="false"
                android:overScrollMode="never"
                >
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    >
                    <Button
                        android:id="@+id/historyMainSysBtn"
                        style="@style/main_bottom_btn_style"
                        android:background="@mipmap/gongnengicon4"
                        android:layout_marginLeft="0dp"
                        android:text="历史呼叫"
                        />

                    <Button
                        android:id="@+id/handleMainSysBtn"
                        style="@style/main_bottom_btn_style"
                        android:background="@mipmap/gongnengicon5"
                        android:text="办理中"
                        />
                    <Button
                        android:id="@+id/callToNumberMainSysBtn"
                        style="@style/main_bottom_btn_style"
                        android:background="@drawable/szgw_skip_number_btn"
                        android:text="过号"
                        />
                    <Button
                        android:id="@+id/callTransferMainSysBtn"
                        style="@style/main_bottom_btn_style"
                        android:background="@mipmap/gongnengicon7"
                        android:text="呼叫移动"
                        />
                    <Button
                        android:id="@+id/specialCallMainSysBtn"
                        style="@style/main_bottom_btn_style"
                        android:background="@mipmap/gongnengicon8"
                        android:text="特呼"
                        />
                    <Button
                        android:id="@+id/pushMessageMainSysBtn"
                        style="@style/main_bottom_btn_style"
                        android:background="@mipmap/gongnengicon9"
                        android:text="消息推送"
                        />
                
                </LinearLayout>
            </HorizontalScrollView>

总结

简单的使用完毕,现在控件越来越多,也越来越强大,特别是Androidx等控件出世,但每个控件都有它最适合的场景。

光看不敲是没用的
看后一定要去实践
一定要去敲代码
一定要去运行试错
这样才是有意义的学习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android控件】HorizontalScrollView的基础使用记录(滚动条自定义) 的相关文章

  • VNC启动gnome或者KDE

    VNC xstartup程序中默认的设定值可以启动twm xff0c 而不是GNOME或KDE 默认配置文件为 HOME vnc xstartup HOME 是用户目录 如下 gnome桌面的配置文件如下 xff1a bin sh Unco
  • crontab执行java -jar不成功

    一个程序经常挂掉 xff0c 不想人为的一种手动重启 故写了一个脚本 xff0c 定时查看程序是否存在 xff0c 不存在就重启 但是过程中一直crontab 设置的定时器一直不执行 crontab e 1 opt speak start
  • crontab 解决周期内未执行完重复执行

    crontab 解决周期内未执行完重复执行 crontabphplock crontab 执行 php 脚本 linux 下的 crontab 定时任务服务 xff0c 可以用来定时运行脚本 工作中经常会用到这样的服务 xff0c 使用起来
  • Kali Linux 2020 VNC设置自动开机启动

    前提 大家好 目前最新版kali Linux 2020离线包貌似已经取消了桌面安装了 xff0c 需要自己去手动安装桌面 xff0c 所以如果你还是命令行 xff0c 那你就先安装个桌面再说 xff0c 怎么装自己去百度 VNC安装过程 首
  • http://wwwnno00.irrlicht3d.cn:8011/forum-20-3.html

    http wwwnno00 irrlicht3d cn 8011 forum 20 3 html
  • git guest reporter

    权限列表如下 xff1a ActionGuestReporterDeveloperMasterOwnerCreate new issue Leave comments Pull project code Download project C
  • 元素化学期末(考点)整理

    元素化学 期末 xff08 考点 xff09 整理 作者 xff1a gjq 转载或引用需联系作者 xff0c 欢迎给作者打钱 xff01 2019年期末考题请联系作者 xff0c 作者微信 xff1a photon gjq xff0c q
  • 关于ubuntu自启动(rc.local,/etc/rcx.d软连接,创建自定义service)

    ubuntu自启动 xff08 总结 xff09 前言方法一 xff1a 编辑etc rc local方法二 xff1a rcx d 下添加脚本方法三 xff1a 创建service 前言 日常工作中难免碰到需要让某些应用程序自启动的功能
  • springMVC+mybatis环境搭建

    web xml文件配置 lt 加载Spring容器配置 gt lt 设置Spring容器加载所有的配置文件的路径 gt lt context param gt lt param name gt contextConfigLocation l
  • 解决 https 无法访问

    本人腾讯云服务器 xff0c 放假上班打开宝塔面板 xff0c 结果无法访问 我想着重启实例 xff0c 结果面板可以打开 xff0c 但是域名打不开了 xff08 之前是可以打开的 xff09 最后在这个地址找到了答案 xff0c 记录一
  • Python程序设计 简单的图像处理(1)

    Python程序设计 简单的图像处理 xff08 1 xff09 1 写个滤镜 照片照的好 xff0c 不如滤镜用得好 xff01 一款好的滤镜软件可以让照片呈现不一样的风格乃至风情 xff0c 修理照片需要扬长避短达到最佳效果 可是滤镜款
  • Xcode操作流

    1 Xcode IDE概览 说明 xff1a 从左到右 xff0c 依次是 导航窗格 xff08 Navigator xff09 gt 边列 xff08 Gutter xff09 gt 焦点列 xff08 Ribbon xff09 gt 代
  • java gui 多线程,界面假死、僵死问题

    xff08 转载1 xff09 楼主bluepb xff08 流星 xff09 2005 06 04 20 28 17 在 Java GUI 设计 提问 我现在在用jAVA做图形化设计 xff0c 想问个多线程的问题 比如在一个窗口上点个按
  • excel数据对比-----查找两列(表)的相同数据

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http xueli blog 51cto com 3325186 920592 现有两个excel表 xff0c
  • discuz 微社区 您请求的XXXX无法访问 接口错误(ERR02)

    我遇到的情况 xff1a 1 UC可以访问页面 xff0c 用微信报错 2 4G网络下可以访问 xff0c WiFi网络下报错 网上有两种解决方法 xff1a 1 关闭防采集 xff0c 我最终的采用方法 2 default下的mobile
  • 所有文件夹都变成1KB文件夹快捷方式病毒的手动清除方法

    电脑差不多都因使用U盘而感染了病毒 xff0c 其中一个就是Autoran病毒的变种 xff0c 它的症状我就不再描述了 xff0c 另外一个病毒的症状是所有文件夹都变成了1KB文件夹快捷方式 xff0c 各盘无法双击打开 xff08 但右
  • 搜狗高速浏览器2.0使用体验

    2010年 4 月 8 号 xff0c 我们终于迎来了 国内浏览器的后起之秀搜狗高速浏览器2 0 正式版 的 发布 高速真双核引擎 的概念得到了落实 它新增并改进了诸多功能 xff0c 修改了一些bug xff0c 从整体提高 搜狗高速浏览
  • Connection refused错误

    这个问题整了我两天时间 xff0c 现在终于解决了 问题 xff1a 用php 构造http请求访问自身web服务器页面 xff0c 总是报Connection refused 111 错误 显示 xff1a unable to conne
  • QT样式表从入门到精通

    QT样式表从入门到精通 文章目录 QT样式表从入门到精通前言1 背景介绍2 初级学习2 1 34 盒子 34 模型2 2 语法说明2 3 基础控件2 4 控件状态表2 5 选择器 3 中级学习3 1 坐标讲解3 1 1 相对坐标3 1 2
  • GIF89a图片头文件欺骗

    1 什么是GIF89a 一个GIF89a图形文件就是一个根据图形交换格式 xff08 GIF xff09 89a版 xff08 1989年7 月发行 xff09 进行格式化之后的图形 在GIF89a之前还有87a版 xff08 1987年5

随机推荐