How to make View
FrameLayout fill all remaining space in ConstraintLayout
I have xml like:
<ImageView android:background="#FF0000" android:id="@+id/header" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_header" android:scaleType="fitXY" android:adjustViewBounds="true" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_default="wrap" app:layout_constraintWidth_default="spread"/> <FrameLayout android:background="#00FF00" app:layout_constraintHeight_default="spread" app:layout_constraintWidth_default="wrap" app:layout_constraintTop_toBottomOf="@id/header" app:layout_constrainedHeight="true" app:layout_constraintBottom_toTopOf="@id/footer" android:id="@+id/task_fragment" android:layout_width="match_parent" android:layout_height="wrap_content"/> <LinearLayout android:background="#FFFF00" android:orientation="vertical" android:id="@+id/footer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_default="spread" app:layout_constraintWidth_default="spread" app:layout_constraintBottom_toBottomOf="parent"> <ImageButton style="?borderlessButtonStyle" android:id="@+id/btn_ar" android:layout_height="wrap_content" android:layout_width="match_parent" android:padding="0dp" android:scaleType="fitXY" android:adjustViewBounds="true" android:src="@drawable/ic_ar"/> </LinearLayout>
There are header, footer and FrameLayout
in the middle I want to make FrameLayout
to fill all remaining space.
I don't understand, which properties I have to use to expand FrameLayout
. Please help me!
EDIT: Or any solution with different layout.
If you have the choice start with ConstraintLayout, but if you already have your app in RelativeLayout, stay with it. That's all I have been following. RelativeLayout is very limited in functionality and many complex layouts can't be made using it, especially when ratios are involved.
ConstraintLayout has dual power of both Relative Layout as well as Linear layout: Set relative positions of views ( like Relative layout ) and also set weights for dynamic UI (which was only possible in Linear Layout). Despite the fact that it's awesome, it fails to serve the purpose with simple UI layouts.
To convert an existing layout to a constraint layout, follow these steps: Open your layout in Android Studio and click the Design tab at the bottom of the editor window. In the Component Tree window, right-click the layout and click Convert layout to ConstraintLayout.
You can't use relative layout directly inside constraint layout. Intention of ConstraintLayout is to optimize and flatten the view hierarchy of your layouts by applying some rules to each view to avoid nesting.
This is really simple. To make any view fill up the available space either horizontally or vertically, just set the layout_width
/layout_height
to 0dp
according to your need.
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