Android 的 ScrollView (滚动条)

这篇具有很好参考价值的文章主要介绍了Android 的 ScrollView (滚动条)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节引言:

本节带来的是Android基本UI控件中的第十个:ScrollView(滚动条),或者我们应该叫他 竖直滚动条,对应的另外一个水平方向上的滚动条:HorizontalScrollView,先来一发官方文档 的链接:ScrollView,我们可以看到类的结构如下:

android scrollview,Android 教程,android,ui

嘿嘿,原来是一个FrameLayout的容器,不过在他的基础上添加了滚动,允许显示的比实际多的内容!

另外,只能够往里面放置一个子元素,可以是单一的组件,又或者一个布局包裹着的复杂的层次结构!

一般对于可能显示不完的情况,我们可以直接在布局的外层套上一个: ScrollView或者HorizontalScrollView!就这么简单~!


可能遇到的一些需求

好的,就不一个个扣文档了,直接说实际开发中可能会遇到的一些需求吧:

另外有一个很典型的问题就是:ScrollView和ListView的嵌套问题,这个放到ListView那一章节 再来讲解~


1.滚动到底部:

我们可以直接利用ScrollView给我们提供的:fullScroll()方法

scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部

scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

另外用这玩意的时候要小心异步的玩意,就是addView后,有可能还没有显示完, 如果这个时候直接调用该方法的话,可能会无效,这就需要自己写handler来更新了~

代码示例:

效果图:

android scrollview,Android 教程,android,ui

实现代码:

布局比较简单,就不贴了,直接贴MainActivity MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_down;
    private Button btn_up;
    private ScrollView scrollView;
    private TextView txt_show;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bindViews();
    }


    private void bindViews() {
        btn_down = (Button) findViewById(R.id.btn_down);
        btn_up = (Button) findViewById(R.id.btn_up);
        scrollView = (ScrollView) findViewById(R.id.scrollView);
        txt_show = (TextView) findViewById(R.id.txt_show);
        btn_down.setOnClickListener(this);
        btn_up.setOnClickListener(this);

        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= 100; i++) {
            sb.append("呵呵 * " + i + "\n");
        }
        txt_show.setText(sb.toString());

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_down:
                scrollView.fullScroll(ScrollView.FOCUS_DOWN);
                break;
            case R.id.btn_up:
                scrollView.fullScroll(ScrollView.FOCUS_UP);
                break;
        }
    }
}

当然除了这种方法还,你还可以使用另一种复杂一点的写法:

public static void scrollToBottom(final View scroll, final View inner) {
    Handler mHandler = new Handler();
    mHandler.post(new Runnable() {
        public void run() {
            if (scroll == null || inner == null) {
                return;
            }
            int offset = inner.getMeasuredHeight() - scroll.getHeight();
            if (offset < 0) {
                offset = 0;
            }
            scroll.scrollTo(0, offset);
        }
    });
}  

scrollTo()参数依次为x,y滚到对应的x,y位置!


2.设置滚动的滑块图片

这个更加简单: 垂直方向滑块:android:scrollbarThumbVertical
水平方向滑块:android:scrollbarThumbHorizontal


3.隐藏滑块

好吧,这个好像没什么卵用:

方法有两种: 1.android:scrollbars="none"
2.Java代码设置:scrollview.setVerticalScrollBarEnabled(false);


4.设置滚动速度:

这个并没有给我们提供可以直接设置的方法,我们需要自己继承ScrollView,然后重写一个 public void fling (int velocityY)的方法:文章来源地址https://www.toymoban.com/news/detail-650420.html

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

到了这里,关于Android 的 ScrollView (滚动条)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity scrollview滚动到指定的位置

    方法一:通过下标 方法二:原文1 原文2 方法一没测试 这里给方法二增加注释理解 图1 图2 图3 图4

    2024年01月20日
    浏览(44)
  • Swift 让ScrollView滚动到具体某个位置

    1. 使用 scrollToItem 方法滚动集合视图 上述代码中,首先使用 scrollToItem 方法将集合视图滚动到第一条数据(左侧对齐),然后在稍后的延迟时间后,再次使用 scrollToItem 方法将其滚动到最后一条数据(左侧对齐)。 2. 使用 setContentOffset 方法来滚动集合视图 上述代码中,我们使

    2024年02月15日
    浏览(39)
  • 微信小程序 scrollview 滚动到指定位置

    在微信小程序中,实现 ScrollView 滚动到指定位置有多种方法,下面将介绍三种主要的实现方式。 通过设置 scroll-view 组件的 scroll-top 属性,我们可以实现滚动到指定位置。以下是具体实现方式: 滚动逻辑: 在上述代码中,scroll-top是一个动态数据,通过手动改变scroll-top的值来

    2024年02月04日
    浏览(38)
  • Unity ScrollView循环滚动播放(有详细注释)

    首先创建一个ScrollView在UI上 在Content上挂载脚本,将ScrollView赋值给Parent。 当Content的高度大于ScrollView的容量高度时便开始滚动。 以下是脚本代码: 效果如下(结尾和开头会停留1秒):

    2024年02月07日
    浏览(42)
  • 小程序中的canvas不跟随scrollView滚动

    问题原因,官方文件说明:canvas为原生组件故有一下的性质: 原文链接:https://blog.csdn.net/qq_25740691/article/details/81867382 解决方法1:看看是不是给最外层标签page定义了height:100%的属性或者overflow相关的属性,如果是的话去掉。检查你的canvas的所有父级元素是否设置了height:1

    2024年02月06日
    浏览(40)
  • 小程序<scroll-view>滚动到指定位置/scrollview

    注意里面的 scroll-into-view=“{{scrollId}}” 和 id=“scrollView{{index}}” 属性。 当scrollId和scroll-view 组件中元素的id相同时 界面将自动滚动到此位置

    2024年02月12日
    浏览(47)
  • 【cocos笔记】记录一次实现ScrollView滚动加载的过程

    使用的开发工具是 CocosCreator ,版本为 3.6 。学习笔记,新人入坑,欢迎指点 当要显示多条数据时,一般会使用滚动视图组件 ScrollView ,这样当数据量大时就可以滚动了。当然这仅限数据量小的情况,如果要展示是数据量很大,不可能一次性请求几百条然后硬塞到 ScrollView 中

    2024年02月12日
    浏览(84)
  • 【Unity-UGUI控件全面解析】| ScrollView 滚动视图组件详解

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:

    2024年02月06日
    浏览(51)
  • uniapp中页面和scrollview两种滚动到顶部原来这么优雅

    页面 scrollview

    2024年02月16日
    浏览(41)
  • taro(小程序一样) ScrollView 滚动到底部或者顶部 再次设置scrollIntoView 无效

    产生这个bug的原因:当我们第一次滑倒底部点击A回到顶部成功,再次滑倒底部,再次点击A无法回到顶部,因为此时的scrollIntoView 对应的值还是A,需要将scrollIntoView对应的值清空,然后重新赋值A,即可解决 解决办法:滑动到顶部或者底部时,清空之前设置的scrollIntoId即可 完

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包