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. 如何获得wp7中scrollview的最大偏移量?
- 3. Turbo Pascal for DOS - 如何获得当前时区偏移量
- 4. 如何获得__TIME__的UTC偏移量?
- 5. 获得给定时区的当前时间偏移量
- 6. 如何获得时区在Java中的当前日期偏移
- 7. 获取Olson时区当前偏移量
- 8. 如何设置初始ScrollView偏移量?
- 9. 如何从iframe中获取当前的iframe偏移量?
- 10. 如何在Javascript当前屏幕视图中获得左上角的偏移量?
- 11. 如何获得内存偏移量?
- 12. 如何在logstash中获得偏移量?
- 13. iPhone - 如何获得时区偏移量?
- 14. 如何获得当前时区偏移(并正确格式化)?
- 15. 添加当前时间的偏移量
- 16. Flex - 如何获得绝对的X和Y坐标,包括HTML偏移量?
- 17. D3.js如何获得x轴和y轴的位置/偏移量
- 18. 设置ScrollView的内容偏移量
- 19. Android WindowManager.LayoutParams y偏移量
- 20. 如何获得当前的音量
- 21. 如何获得字符偏移X和Y(坐标)
- 22. 如何获得kafka的最新偏移
- 23. 有没有办法用BufferedReader获得当前字节的偏移量?
- 24. 如何确定xamarin表格中的当前滚动偏移量
- 25. 如何知道C#中BinaryReader的当前偏移量?
- 26. 如何设置当前帖子的偏移量?
- 27. 如何找到使用javascript的当前窗口偏移量?
- 28. 获取UIWebView当前滚动偏移量的div
- 29. 检测y偏移scrollView中的变化并启用寻呼
- 30. 计算Facebook封面的偏移量y
这些方法受到保护,因此只有在继承ScrollView的情况下才可以访问。 – 2011-05-11 14:56:40
谢谢,克里斯蒂安,你的解决方案对我有帮助。我已经有了ScrollView的子类视图。它应该使用监听器setOnScrollViewListener(http://www.nicholasmelnick.com/entries/104)进行计算。 getScrollY()的第一个解决方案也适用。 – CoolMind 2015-11-02 15:31:38