答案 0 :(得分:51)
在ScrollView上调用getScrollY()。有关详情,请参阅此处:http://developer.android.com/reference/android/view/View.html#getScrollY%28%29
答案 1 :(得分:8)
如果您确定在使用getScrollY()或getTop()之后应该获得一些值,请尝试将这些方法放在
中yourScroolView.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"Current Y is : "+getScrollY,Toast.LENGTH_SHORT).show();
}
});
现在它应该工作了。根据我对这种方法的理解,它只会在绘制布局后运行。这可能是你之前保持0的原因之一。希望它有所帮助。
答案 2 :(得分:6)
你为什么不尝试这样的事情?
sscanf()
答案 3 :(得分:1)
答案 4 :(得分: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();
}
你也可以做类似处理宽度的事情