如下图所示。我有一个relative layout
。我有ImageView
相同的,我需要在视图开始和这个 ImageView 之间获得像素差距。我的活动如下。请指教。我尝试了各种方法,topY()
但找不到解决方案。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/main_ruler_linear_layout"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:orientation="horizontal"
>
</LinearLayout>
<ImageView
android:id="@+id/line_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/line"/>
<EditText
android:id="@+id/txtRulerCenterPosition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/main_ruler_linear_layout"
android:layout_marginRight="17dp"
android:layout_marginTop="16dp"
android:ems="10"
android:textSize="5dp"
android:focusable="false"/>
</RelativeLayout>
要计算一个视图底部与另一视图顶部之间的距离:
View oneView = ...;
View otherView = ...;
RectF oneRect = calculateRectOnScreen(oneView);
RectF otherRect = calculateRectOnScreen(otherView);
float distance = Math.abs(oneRect.bottom - otherRect.top);
实用方法:
public static RectF calculateRectOnScreen(View view) {
int[] location = new int[2];
view.getLocationOnScreen(location);
return new RectF(location[0], location[1], location[0] + view.getMeasuredWidth(), location[1] + view.getMeasuredHeight());
}
在某些情况下,您需要替换view.getLocationOnScreen
to view.getLocationInWindow
。