As shown in below image. I do have one relative layout
. I have my ImageView
in same and I need to get gap in pixels between view starts and this ImageView.
My activity is as below. Please advice. I tried various ways like topY()
but couldn't find solution.
<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>
To calculate the distance between the bottom of the one view and the top of the other view:
View oneView = ...;
View otherView = ...;
RectF oneRect = calculateRectOnScreen(oneView);
RectF otherRect = calculateRectOnScreen(otherView);
float distance = Math.abs(oneRect.bottom - otherRect.top);
The util method:
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());
}
In some cases you need to replace the view.getLocationOnScreen
to view.getLocationInWindow
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With