5.15ScrollView

本文详细介绍了ScrollView、HorizontalScrollView的使用方法,包括如何在XML布局中实现滚动效果,并通过监听滚动事件来触发特定操作。重点讨论了如何隐藏滚动条以及如何在滚动到底部时进行文本追加。
摘要由CSDN通过智能技术生成

ScrollView:滚动视图是指当前拥有很多内容,屏幕显示不完时,需要通过滚动来显示完整的视图。

HorizontalScrollView:水平滚动视图
ScrollView:垂直滚动视图

getResources().getString(R.string.content)//获取res文件夹下的string字符串

tv.setText(getResources().getString(R.string.content));

使用ScrollView实现滚动效果:
在xml中加入

<ScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         >

        <TextView
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </ScrollView>

android:scrollbars=“none”//隐藏滚动条
相同功能可以在java代码中设置:setVerticalScrollBarEnable(false);

监听ScrollView何时滑动到底部:
scroll.setOnTouchListener()

scroll.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                switch (event.getAction()) {
                case MotionEvent.ACTION_MOVE: {
                    /**
                     * (1)getScrollY()————滚动条滑动的距离 (2)getMeasuredHeight()
                     * (3)getHeight()
                     */

                    // 顶部状态
                    if (scroll.getScrollY() <= 0) {
                        Log.i("Main", "滑动到顶部");
                    }

                    // 底部状态
                    // TextView的总高度<=一屏幕的高度+滚动条的滚动距离
                    if (scroll.getChildAt(0).getMeasuredHeight() <= scroll
                            .getHeight() + scroll.getScrollY()) {

                        Log.i("Main", "滑动到底部");
                        Log.i("Main",
                                "scroll.getChildAt(0).getMeasuredHeight()="
                                        + scroll.getChildAt(0)
                                                .getMeasuredHeight()
                                        + "scroll,getHeight()="
                                        + scroll.getHeight()
                                        + "scroll.getScrollY()="
                                        + scroll.getScrollY());
                        tv.append(getResources().getString(R.string.content));

                    }
                    break;
                }
                }

                return false;
            }
        });

getScrollY()//滚动条Y方向滑动的距离(顶部为0,底部为最大)
getMeasuredHeight()//所有(以及没显示出来)的高度
getHeight()//得到一屏幕的高度(不是整个屏幕,而是占有的部分)
scroll.getChildAt(0).getMeasuredHeight()//textView的总高度

scrollTo和scrollBy的区别
scroll.scrollTo(X,Y)//以滚动视图起始位置开始计算
scroll.scrollBy(X,Y)//相对前一次的位置,去滚动相应的距离
tv.append(…)//在textView的文本后加上…

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId())
        {
        //scrollTo:以滚动视图起始位置开始计算的
        //scrollBy:相对前一次的位置,去滚动对应的距离

        case R.id.up:
        {   
            scroll.scrollBy(0, -30);
            break;
        }

        case R.id.down:
        {

            scroll.scrollBy(0, 30);
            break;
        }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值