Поместите 3 кнопки в LinearLayout, чтобы занять равное количество места

Я бы хотел, чтобы три кнопки занимали равное количество свободного пространства по горизонтали подряд. Я использовал android:layout_gravity . В чем проблема?

Макет xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="1.0" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Bg" android:background="@drawable/button_red" android:layout_weight=".2" android:layout_gravity="left" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Bm" android:background="@drawable/button_red" android:layout_weight=".2" android:textColor="#ffffff" android:layout_gravity="center" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_red" android:layout_weight=".2" android:text="@string/Bf" android:layout_gravity="right" /> </LinearLayout> 

Если кто-то видит, что не так, спасибо.

Должен работать следующий макет. Весы для LinearLayouts ..

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="3" > <Button android:id="@+id/button1" ... android:layout_weight="1"/> <Button android:id="@+id/button2" ... android:layout_weight="1"/> <Button android:id="@+id/button3" ... android:layout_weight="1"/> </LinearLayout> 

Кроме установки layout_weight вы должны установить layout_width или layout_height в 0dp . Поэтому, если вы хотите, чтобы, например, распределяли кнопки по горизонтали, layout_width должен быть 0dp и layout_weight .2 или любое число, если оно равно с помощью кнопок, которые у вас есть.

Поэтому ваш макет должен быть таким

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/Bg" android:background="@drawable/button_red" android:layout_weight="1" /> <Button android:id="@+id/button" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/Bm" android:background="@drawable/button_red" android:layout_weight="1" android:textColor="#ffffff" /> <Button android:id="@+id/button" android:layout_width="0dp" android:layout_height="wrap_content" android:background="@drawable/button_red" android:layout_weight="1" android:text="@string/Bf" /> </LinearLayout> 

Разделите сумму веса на равную долю во всех кнопках.

Удалите свойство layout_gravity и добавьте android: layout_weight = 0.33.

Это будет работать

Проверьте это:

 <RelativeLayout android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button1" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_alignParentLeft="true"/> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_toRightOf="@+id/button1"/> </RelativeLayout> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_alignParentRight="true"/> </RelativeLayout> 

Поместите кнопки в относительный макет. Добавьте свойства к кнопкам allignParentleft = true, еще один allignParentcenter = true и allignParentRight = true для каждой кнопки.

Пожалуйста, рассмотрите следующий фрагмент раскладки:

 <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="3"> <ImageView android:src="@drawable/logo1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="left|center_vertical" /> <TextView android:id="@+id/toolbar_title" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Some Title" android:textColor="@android:color/black" android:layout_gravity="center" android:gravity="center" android:layout_weight="1" /> <ImageView android:src="@drawable/logo2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="right|center_vertical" /> </LinearLayout> 

2 вещи, которые следует отметить выше.

A. Я создал LinearLayout с weightSum из 3.

B. Тогда внутри я создаю 3 элемента, каждый из которых имеет layout_weight из 1, так что я могу иметь, чтобы мои дочерние элементы распределяли все пространство между собой равномерно.

Вы можете разделить его так: `

  <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:layout_toLeftOf="@+id/imageButtonLikedPost"> <ImageButton android:id="@+id/imageButtonMyPost" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/mypost_tab_bg" /> </RelativeLayout> <ImageButton android:id="@+id/imageButtonLikedPost" android:layout_width="40dp" android:layout_height="30dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/mylike_tab_bg" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_toRightOf="@+id/imageButtonLikedPost"> <ImageButton android:id="@+id/imageButtonMyBlog" android:layout_width="30dp" android:layout_height="30dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/tab4_bg" /> </RelativeLayout> </RelativeLayout>`