ScrollView(捲軸)


本節引言:

本節帶來的是Android基本UI控制項中的第十個:ScrollView(捲軸),或者我們應該叫他 垂直滾動條,對應的另一個水平方向上的滾動條:Horizo​​​​ntalScrollView,先來一發官方文檔 的連結:ScrollView,我們可以看到類別的結構如下:

1.png

#嘿嘿,原來是一個FrameLayout的容器,不過在他的基礎上添加了滾動,允許顯示的比實際多的內容!

另外,只能夠往裡面放置一個子元素,可以是單一的元件,又或者一個佈局包裹著的複雜的層次結構!

一般對於可能顯示不完的情況,我們可以直接在佈局的外層套上一個: ScrollView或者Horizo​​ntalScrollView!就這麼簡單~!


可能遇到的一些需求

好的,就不一個扣文檔了,直接說實際開發中可能會遇到的一些需求吧:

另外有一個很典型的問題就是:ScrollView和ListView的巢狀問題,這個放到ListView那一章 再來講解~


1.滾動到底部:

我們可以直接利用ScrollView給我們的:fullScroll()方法

scrollView.fullScroll(ScrollView.FOCUS_DOWN);捲動到底部

scrollView.fullScroll(ScrollView.FOCUS_UP);捲動到頂部

另外用這玩意的時候要小心異步的玩意,就是addView後,有可能還沒顯示完, 如果這時候直接呼叫該方法的話,可能會無效,這就需要自己寫handler來更新了~

#程式碼範例:

##效果圖:

2.gif

實作程式碼:

版面比較簡單,就不貼了,直接貼MainActivity

MainActivity.java#

公共類別 MainActivity 擴充 AppCompatActivity 實作 View.OnClickListener{

    私有按鈕 btn_down;
    私有按鈕 btn_up;
  View;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        );
        bindViews();
    }


    private void bindViews() {
        btn_down = (Button) findView Id(R.id.btn_up);
        scrollView = (ScrollView) findViewById(R.id.scrollView);
         lickListener(this);
        btn_up.setOnClickListener(this ) );

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

    ##        switch (v.getId()) {
            case R.id) DOWN);
                 break;
            case #                scrollView.fullScroll(ScrollView.FOCUS_UP);
break;
        }
    }
}

#public static void scrollToBottom(final View scroll, final View inner) {

    Handler mHandler = new Han p. void run() {
# if (scroll == null || inner == null) {
                ,  int offset = inner.getMeasuredHeight() - scroll.getHeight();
            if (offset < 0 ) {
                offset = 0;
                   }
    });
}



scrollTo
()參數依序為x,y滾到對應的x,y位置!


2.設定滾動的滑桿圖片
這個更簡單:

垂直方向滑桿:android:scrollbarThumbVertical


#水平

方向滑桿:android:
scrollbarThumbHorizo​​ntal

##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);    //速度变为原来的一半
}


本節小結:

好的,能想到的ScrollView的東西就這麼多,因為平常這個用得不多,一般直接套在外面而已, 另外,問題最多的一般是ScrollView和ListView的巢狀問題~如果有什麼補充歡迎提出,謝謝~

#