zoukankan      html  css  js  c++  java
  • 2021.3.13 Android滚动条

    一、今日学习内容

      

    1.滚动到底部:

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

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

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

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

    代码示例:

    效果图:

    实现代码:

    布局比较简单,就不贴了,直接贴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 + "
    ");
            }
            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)的方法:

    @Override
    public void fling(int velocityY) {
        super.fling(velocityY / 2);    //速度变为原来的一半
    }
  • 相关阅读:
    Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)
    HDU 1281 棋盘游戏 【二分图最大匹配】
    Codeforces Round #527 (Div. 3) F. Tree with Maximum Cost 【DFS换根 || 树形dp】
    Codeforces Round #527 (Div. 3) D2. Great Vova Wall (Version 2) 【思维】
    Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) 【思维】
    Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】
    Avito Cool Challenge 2018 E. Missing Numbers 【枚举】
    Avito Cool Challenge 2018 C. Colorful Bricks 【排列组合】
    005 如何分析问题框架
    004 如何定义和澄清问题
  • 原文地址:https://www.cnblogs.com/wmdww/p/14903722.html
Copyright © 2011-2022 走看看