android中seekBar控制項的一個小bug

來源:互聯網
上載者:User

最近測試組同事反映seekbar控制項點選不中最後一格,隨後我研究了下源碼,發現了確實有此問題

 

seekbar通過setMax()來設定“最大值”,實際上這個最大值就是細分的程度,假如設成10,整個seekbar即細分成10份,設成100,及細分成100份,設定越大seekbar滑動起來最“流暢”

 

假如Max設為3整個seekbar即分成三段,0~1,1~2,2~3

由於在trackTouchEvent()中,setProgress((int)progress, true)使用了強制轉換,出現了如下規律

當progress在[0,1)時,滑塊顯示在0位置

當progress在[1,2)時,滑塊顯示在1位置

當progress在[2,3)時,滑塊顯示在2位置

當progress在3時,滑塊顯示在3位置

由此可以看出,最後一格很痛點中。

 

作小修改:

int progressRound = Math.round(progress);

setProgress(progressRound, true);

如此之後便有如下規律

當progress在[0,0.5)顯示在0位置

當progress在[0.5,1.5),滑塊顯示在1位置

當progress在[1.5,2.5)時,滑塊顯示在2位置

當progress在[2.5,3]時,滑塊顯示在3位置

 

這樣修改之後,個人覺得更符合常理,不知道這個算不算seekBar中一個小小的設計缺陷~~

 

 

ps:

今天測試組同事又反應,星星評等控制項不準確了。。我才恍然大悟以上做的修改是錯誤的。 星星評等控制項(RatingBar)和seekBar一樣,也是繼承的AbsSeekBar,經過上面的修改之後,評分顯示會往前跳了一格。。

原來架構的真是不可以隨便改動的。。o(╯□╰)o~~只得改回來,seekBar的bug另想辦法~~

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.