ScrollView的使用

来源:互联网 发布:曲阜问政网络平台 编辑:程序博客网 时间:2024/05/22 17:47

scrollTo()相对于左上角进行滚动,scrollBy()相对于上次滑动的位置进行滑动。

ScrollView滑动到指定的位置,让焦点显示。

——————————————————————>

getMeasuredHeight() 获取高度

getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。

当超出屏幕后, getMeasuredHeight() 等于 getHeight()加上屏幕之外没有显示的大小。

——————————————————————>

<HorizontalScrollView>, <ScrollView>只能有一个子控件

获取资源文件对象,通过传递id,获取对应的资源;
隐藏ScrollView的滚动条,xml中配置,代码中设置;
判断ScrollView什么时候滑动到底部?
TextView中的append方法,追加刷新

控制滚动条滚动的位置: ScrollTo与ScrollBy的区别  参考的坐标系不一样


package com.lantu.tuhuadmin.testapplication;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.ScrollView;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private static final String TAG = "MainActivity";    private ScrollView scroll_view;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button btn_down = (Button) findViewById(R.id.btn_down);        Button btn_up = (Button) findViewById(R.id.btn_up);        btn_down.setOnClickListener(MainActivity.this);        btn_up.setOnClickListener(MainActivity.this);        //不滚动显示不完整,通过Resources对象,获取资源        final TextView tv = (TextView) findViewById(R.id.tv);        tv.setText(getResources().getText(R.string.tv_content));        //在布局文件中,通过让tv成为ScrollView的子控件实现滚动        //通过代码实现隐藏滚动条        scroll_view = (ScrollView) findViewById(R.id.scroll_view);        scroll_view.setVerticalScrollBarEnabled(false);        //scroll_view.setHorizontalScrollBarEnabled(false);        //如何控制ScrollView视图的位置?        //监听ScrollView什么时候能够滑动到底部?  通过设置触摸监听实现        scroll_view.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View view, MotionEvent event) {                switch (event.getAction()) {                    case MotionEvent.ACTION_MOVE: {                        /**                         * getScrollBy()  滚动条滑动的距离                         * getHeight()  获取控件显示的高度                         * getMeasuredHeight()  获取控件总的高度,包括隐藏起来的。                         */                        if (scroll_view.getScaleY() < 0 || scroll_view.getScaleY() == 0) {                            //说明ScrollView没有滑动                            Log.i(TAG, "顶部");                        }                        //滑动条滑动到最底部的位置时   TextView的总高度=getScaleY()+getHeight()                        //获取TextView的总高度:scroll_view.getChildAt(0).getMeasuredHeight()                        //一屏幕的高度:scroll_view.getHeight()                        if (scroll_view.getChildAt(0).getMeasuredHeight() < scroll_view.getScaleY() + scroll_view.getHeight() || scroll_view.getChildAt(0).getMeasuredHeight() == scroll_view.getScaleY() + scroll_view.getHeight()) {                            Log.i(TAG, "滑动到底部");                            //实现刷新效果   追加要显示的内容                            tv.append(getResources().getText(R.string.tv_content));                        }                    }                    break;                    case MotionEvent.ACTION_DOWN: {                    }                    break;                    case MotionEvent.ACTION_UP: {                    }                    break;                }                return false;            }        });    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.btn_down: {                //向下滑动                // scroll_view.scrollTo(0, 30);                scroll_view.scrollBy(0, 30);            }            break;            case R.id.btn_up: {                //向上滑动                // scroll_view.scrollTo(0, -30);                scroll_view.scrollBy(0, -30);            }            break;        }    }}



0 0
原创粉丝点击