I have a problem with relativelayout where its children could use layout_below and layout_weight to set its percentage height.
For example, we have a relative layout and inside of it we have three linear layouts with textviews. Now, I would like to set for three of them (linearlayouts) 25,50,25 % of height of total height of relative layout. How could I accomplish it?
I found a solution for weight_sum and and relativelayout (CLICK), but it doesn't use layout_below.
How can I fix this?
I tried to add additional linearlayout inside of all linearlayouts, but then I am unable use layout_below.
Here is concept picture idea:
Here is my code:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/linlay_leftcol_notification_header" >
<LinearLayout
android:id="@+id/linlay_leftcol_clock_theday"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tv_theday"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/theday"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:id="@+id/linlay_leftcol_clock_thetime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linlay_leftcol_clock_theday" >
<TextView
android:id="@+id/tv_thetime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/thetime"
android:textColor="#FFFFFF" />
</LinearLayout>
<LinearLayout
android:id="@+id/linlay_leftcol_clock_thenumber_themonth_theyear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linlay_leftcol_clock_thetime" >
<TextView
android:id="@+id/tv_thenumberofday_themonth_theyear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/thenumberofday_themonth_theyear"
android:textColor="#FFFFFF" />
</LinearLayout>
</RelativeLayout>
LinearLayout is less used as compared to RelativeLayout. RelativeLayout is used more in applications. We can use LinearLayout inside RelativeLayout. We can also use RelativeLayout as a Child of LinearLayout.
LinearLayout : is a ViewGroup that aligns all children in a single direction, vertically or horizontally. RelativeLayout : is a ViewGroup that displays child views in relative positions. AbsoluteLayout : allows us to specify the exact location of the child views and widgets.
relativelayout is deprecated now.
Note: For better performance and tooling support, you should instead build your layout with ConstraintLayout.
Try this...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#ff00ff"
android:orientation="vertical">
<RelativeLayout
android:layout_weight="1"
android:background="#ffff00"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Hello 1"
android:textColor="#000000"
android:textSize="15dp" />
</RelativeLayout>
<RelativeLayout
android:layout_weight="2"
android:background="#00ffff"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Hello 2"
android:textColor="#000000"
android:textSize="15dp" />
</RelativeLayout>
<RelativeLayout
android:layout_weight="1"
android:background="#ffff00"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Hello 3"
android:textColor="#000000"
android:textSize="15dp" />
</RelativeLayout>
</LinearLayout>
Check out this:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight=".15"
android:background="@android:color/background_dark"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/rel_1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#A52A2A" >
<TextView
android:id="@+id/tv_theday"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="1st layout"
android:textColor="#FFFFFF" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rel_2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#8B008B" >
<TextView
android:id="@+id/tv_theday"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="2ndlayout"
android:textColor="#FFFFFF" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rel_3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#00008B" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="3rd layout"
android:textColor="#FFFFFF" />
</RelativeLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/rel_side"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight=".75"
android:background="#ff0000" >
<TextView
android:id="@+id/tv_theday"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="side layout"
android:textColor="#FFFFFF" />
</RelativeLayout>
</LinearLayout>
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