如何获取ScrollView的当前Y偏移量

Ric*_*ich 36 android

ScrollView有一个设置x和y滚动偏移的方法,但没有获取当前偏移的方法(我真正感兴趣的是y偏移,因为ScrollView只支持垂直滚动).我没有看到任何可以在超类中工作的方法,并为内容视图尝试了getTop(),它始终为零.我错过了什么吗?

Cha*_*ley 54

在ScrollView上调用getScrollY().有关详细信息,请参阅此处:http://developer.android.com/reference/android/view/View.html#getScrollY%28%29

  • 我想知道我的滚动视图是否用周期性增加的内容(如日志视图)包装 textView 显示最后一行文本。这样做了:`boolean lastLineVisible = scrollView.getScrollY() + scrollView.getHeight() + 100 >= textView.getHeight()` (2认同)

小智 9

如果您确定在使用getScrollY()或getTop()之后应该获得一些值,请尝试将这些方法放入

yourScroolView.post(new Runnable() {
@Override
public void run() {
    Toast.makeText(getApplicationContext(),"Current Y is : "+getScrollY,Toast.LENGTH_SHORT).show();
            }
        });
Run Code Online (Sandbox Code Playgroud)

现在它应该工作.根据我对这种方法的理解,它只会在绘制布局后运行.这可能是你之前保持0的原因之一.希望能帮助到你.


小智 7

你为什么不尝试这样的事情?

targetScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            int scrollX = targetScrollView.getScrollX();
            Log.d(TAG, "scrollX: " + scrollX);
        }
    });
Run Code Online (Sandbox Code Playgroud)


Cri*_*ian 3

怎么样:computeHorizontalScrollOffset()computeVerticalScrollOffset().

  • 这些方法是受保护的,因此只有在子类化 ScrollView 时才能访问。 (4认同)