I am trying to create the following XML layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:weightSum="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Hello"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Hello"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Hello"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Hello"/>
</LinearLayout>
</LinearLayout>
I am expecting the first TextView and the inner LinearLayout to take up equal amounts of space but that is not happening. Image.
Can someone please suggest any fixes?
CodePudding user response:
Try this once-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="2"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Hello" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Hello" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Hello" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Hello" />
</LinearLayout>
</LinearLayout>
CodePudding user response:
It looks like your weighting has worked correctly in your image.
The left over space has been evenly been distributed between the 2 views with weights.
The problem is layout_weight affects the left over space after the content has taken all the space it needs, it does not directly control the overall size.
Better to use ConstraintLayout then set layout_constraintWidth_percent to 50% for each item
