使用ScrollView实现滚动

一、ScrollView介绍

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

二、ScrollView的种类

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

    <HorizontalScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none">
    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </HorizontalScrollView>

三、隐藏ScrollView

(1)标签属性:android:scrollbars=”none”
(2)代码设置:
setHorizontalScrollBarEnabled(false);隐藏横向ScrollView
setVerticalScrollBarEnabled(false);隐藏纵向ScrollView

四、setOnTouchListener的使用

应用案例:判断ScrollView何时滑动到底部

public class MainActivity extends AppCompatActivity {

    private TextView tv;
    private ScrollView scroll;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv= (TextView) findViewById(R.id.content);
        tv.setText(getResources().getString(R.string.content));
        scroll  = (ScrollView) findViewById(R.id.scroll);
        scroll.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.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.getHeight()="+scroll.getChildAt(0).getMeasuredHeight()+"scrol,getHeight()="+scroll.getHeight()+"scroll.getScrollY()="+scroll.getScaleY());
                            tv.append(getResources().getString(R.string.content));//滑动到底部追加新的文字
                        }
                        break;
                    }
                    }
                return false;
            }
        });
    }

五、控制ScrollView视图位置

1、scrollTo和ScrollBy区别
应用案例:控制ScrollView视图位置

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            //scrollTo:以滚动视图其实位置开始计算
            //scrollBy:相对前一次位置,去滚动对应的距离
            case R.id.up:
            {
                scroll.scrollTo(0,-30);
                break;
            }
            case R.id.down:
            {
                scroll.scrollTo(0,30);
                break;
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值