ScrollView有一個設置x和y滾動偏移量的方法,但沒有獲取當前偏移量的方法(我真正感興趣的是y偏移量,因爲ScrollView僅支持垂直滾動)。我沒有看到任何可以在超類中工作的方法,並且嘗試getTop()來獲取內容視圖,該視圖始終爲零。我錯過了什麼嗎?如何獲得當前的ScrollView的Y偏移量
28
A
回答
1
46
在ScrollView上調用getScrollY()。在這裏看到更多的細節:http://developer.android.com/reference/android/view/View.html#getScrollY%28%29
+1
我想知道我的scrollView是否包含一個帶有周期性增長內容(如日誌視圖)的textView,顯示了文本的最後一行。這樣做:'布爾lastLineVisible = scrollView.getScrollY()+ scrollView.getHeight()+ 100> = textView.getHeight()' – 2015-07-02 01:17:42
4
如果你確信你應該使用getScrollY()或共達()後得到一些價值,儘量把這些方法裏面
yourScroolView.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"Current Y is : "+getScrollY,Toast.LENGTH_SHORT).show();
}
});
現在,它應該工作。根據我對這種方法的理解,它只會在繪製佈局之後運行。這可能是你以前不斷獲得0的原因之一。希望能幫助到你。
0
我通過以下獲得。首先獲取屏幕高度和寬度。
DisplayMetrics metrics = getResources().getDisplayMetrics();
float screenWidth = metrics.widthPixels;
float screenHeight = metrics.heightPixels;
然後找出原稿的高度(總,正在顯示什麼,什麼是在屏幕的)
public float getDocumentHeight(){
return (computeVerticalScrollRange() * screenHeight)/computeVerticalScrollExtent();
}
終於得到彌補
public float getTopY(){
return (getDocumentHeight() * computeVerticalScrollOffset())/computeVerticalScrollRange();
}
這給你的窗口頂部相對於你看到的文件的一部分,所以你可以找到一個事件的確切位置
public boolean onTouchEvent(MotionEvent event) {
int y = event.getY() + (int) getTopY();
}
你也可以做類似的處理寬度
2
你爲什麼不嘗試這樣的東西嗎?
targetScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int scrollX = targetScrollView.getScrollX();
Log.d(TAG, "scrollX: " + scrollX);
}
});
相關問題
- 1. Java 8 ZoneOffset - 如何獲得當前系統的UTC偏移量
- 2. 如何獲得__TIME__的UTC偏移量?
- 3. 如何在Javascript當前屏幕視圖中獲得左上角的偏移量?
- 4. 如何在logstash中獲得偏移量?
- 5. 如何獲得當前時區偏移(並正確格式化)?
- 6. 添加當前時間的偏移量
- 7. D3.js如何獲得x軸和y軸的位置/偏移量
- 8. Flex - 如何獲得絕對的X和Y座標,包括HTML偏移量?
- 9. 設置ScrollView的內容偏移量
- 10. Android WindowManager.LayoutParams y偏移量
- 11. 如何獲得當前的音量
- 12. 如何獲得字符偏移X和Y(座標)
- 13. 如何獲得kafka的最新偏移
- 14. 有沒有辦法用BufferedReader獲得當前字節的偏移量?
- 15. 獲取UIWebView當前滾動偏移量的div
- 16. 如何設置當前帖子的偏移量?
- 17. 如何找到使用javascript的當前窗口偏移量?
- 18. 如何確定xamarin表格中的當前滾動偏移量
- 19. 計算Facebook封面的偏移量y
- 20. 如何獲得RadDataBoundListBox中的滾動偏移量?
- 21. 如何獲得相對於特定父級的偏移量?
- 22. 如何在Rails 2.3中獲得正確的時區偏移量?
- 23. 如何獲得Javascript中整個div的範圍偏移量?
- 24. 如何獲得一個元素的正確偏移量? - jQuery
- 25. Qt:如何獲得設備的GMT偏移量?
- 26. 如何獲得MySQL中特定行的偏移量?
- 27. 如何查找JTextPane中偏移量的顯示位置(x,y)?
- 28. 如何用fwrite()覆蓋偏移量Y上的X個字節?
- 29. JavaScript - 使用UTC偏移量獲取當前日期
- 30. 如何獲得時區偏移值
這些方法受到保護,因此只有在繼承ScrollView的情況下才可以訪問。 – 2011-05-11 14:56:40
謝謝,克里斯蒂安,你的解決方案對我有幫助。我已經有了ScrollView的子類視圖。它應該使用監聽器setOnScrollViewListener(http://www.nicholasmelnick.com/entries/104)進行計算。 getScrollY()的第一個解決方案也適用。 – CoolMind 2015-11-02 15:31:38