如何从 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));
}
});
我有以下布局:
<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));
}
});