时间:2010-07-24 21:59:05

标签: android

5 个答案:

答案 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();
    }

你也可以做类似处理宽度的事情