如何从 RelativeLayout 中的视图获取绝对坐标

How to get absolute coordinates from Views in a RelativeLayout

我有以下布局:

<ScrollView>
    <RelativeLayout>
        <RelativeLayout>
            <View
                android:id="@+id/vline"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@color/md_white_1000"/>
            <ImageButton>...</ImageButton>
        </RelativeLayout>
    </RelativeLayout>
</ScrollView>

当然,不同的布局在不同的屏幕上有自己的内容和高度。

现在我想通过按下 ImageButton 来平滑地向上滚动我的 ScrollView,以便 Views 的左上角位于特定屏幕的左上角。

我试过了:

ImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                scrollView.smoothScrollTo(0, vline.getTop());
            }
        });

和所有其他 "getY()" 方法,但没有人带来我想要的结果。它只是将我的所有内容滚动到最高位置。

我才刚刚开始使用 Android,非常感谢您的帮助。

解决方法如下:

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int statusbarHeight = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight()
                        - YOURVIEW.getHeight();
                int[] position = new int[2];
                vline.getLocationInWindow(position);
                scrollView.smoothScrollBy(0, (position[1]-statusbarHeight));
            }
        });