1. 程式人生 > >解決ScrollView滑動過程中ScrollTo()方法不起作用的問題

解決ScrollView滑動過程中ScrollTo()方法不起作用的問題

原文

本篇文章作為新的類別 “Android經驗之談” 開篇之作,記錄實際開發中遇到的比較“奇怪”的問題以及解決方案,不求長篇大論,但求短小精悍,一兩句話講明問題及解決方案,畫龍點睛,一語道破天機。

有時候,一句提醒,能讓人豁然開朗,少走很多彎路。

案例:閱讀軟體中用ScrollView巢狀TextView顯示章節內容

問題:當滑動ScrollView後(還在慣性滑動中)切換章節內容,並定位到ScrollView底部

此時呼叫scrollTo(int x, int y)不起作用。

分析原因:由於滑動動畫還在繼續,scrollTo在執行後效果被滑動動畫覆蓋,沒起作用。

曾苦於一時沒有解決方案,未曾找到取消滑動動畫的方法,後偶然發現,smoothScrollTo()方法可以打斷動畫,將

scrollTo()換成smoothScrollTo()方法可正常定位位置,但定位過程有動畫要耗費一些時間,不是本想要的快速定位。

經嘗試發現以下寫法即可滿足需求:

  1. //滾動到原點
  2. scrollView.scrollTo(00);  
  3. scrollView.smoothScrollTo(00);  
注意兩個方法呼叫先後順序不可顛倒。

此乃純屬偶然發現,想知道為什麼,去問谷歌!


在此記錄一下我的問題:我想讓scrollView回滾到圓點,然後在滾動固定的距離,發現使用scrollTo在某些裝置上無效

;使用smoothScrollTo位置會錯亂。

使用

scrollRoot.scrollTo(0,0);
                scrollRoot.smoothScrollTo(0, 0);
                scrollRoot.smoothScrollBy(0, heightDifference);
解決問題。