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

时间:2015-09-23 11:27:53

标签: java android coordinates android-scrollview android-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());
            }
        });

和所有其他&#34; getY()&#34;方法,但没有人带来我想要的结果。它只是将我的所有内容全部滚动起来。

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

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

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));
            }
        });