I have a RelativeLayout below. There are an expandable view and a reveal frame layout in it. RevealFrameLayout aligned to screen bottom and is below ExpandableView. When user click fab reveal animation will starts from the fab center and show the reveal frame layout.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/expandable_frame"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_alignParentTop="true"
android:background="@color/colorPrimary"
android:elevation="16dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<TextView
android:id="@+id/app_name_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
android:padding="16dp"
android:text="@string/app_name"
android:textAppearance="@style/ExtraLargeText"/>
</FrameLayout>
<TextView
android:id="@+id/error_tv"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@id/expandable_frame"
android:background="@color/mid_grey"
android:gravity="center"
android:textColor="@color/error_red"
android:visibility="invisible"
tools:text="@string/error_login"
tools:visibility="visible"/>
<android.support.design.widget.TextInputLayout
android:id="@+id/username_til"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/error_tv"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/username_tiet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username"
android:inputType="text"
android:lines="1"
android:nextFocusDown="@+id/password_tiet"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/password_til"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/username_til"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp">
<android.support.design.widget.TextInputEditText
android:id="@id/password_tiet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword"
android:lines="1"/>
</android.support.design.widget.TextInputLayout>
<FrameLayout
android:id="@+id/loading_reveal_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@id/expandable_frame"
android:background="@color/colorAccent"
android:visibility="invisible">
<com.wang.avi.AVLoadingIndicatorView
android:id="@+id/loading_animation_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="invisible"/>
</FrameLayout>
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_below="@id/expandable_frame"
android:visibility="gone"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/login_fab"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_margin="16dp"
android:tint="@android:color/white"
app:srcCompat="@drawable/ic_ok"/>
</RelativeLayout>
I calculate center of fab like this:
int cx = mLoginFab.getRight() - mLoginFab.getMeasuredWidth() / 2;
int cy = mLoginFab.getBottom() - mLoginFab.getMeasuredHeight() / 2;
But I get coordinates that are always lower than fab's location. It look like Reveal Frame Layout's bottom is out of the phone screen bounds.
Does anyone know what is wrong with this layout and how to get actual fab center coordinates?
Thanks in advance.