Как сопоставить высоту кнопки с другой кнопкой, когда они находятся на разных linearLayout?

У меня есть два разных LinearLayout (вертикальных). 1-й LinearLayout имеет 3 кнопки с именами btnX, btnY, btnZ. 2nd LinearLayout имеет 2 кнопки с именами btnA, btnB. Верхнее выравнивание btnB должно следовать за btnY. Если я добавлю новую кнопку btnX (допустим), высота btnB будет увеличена, как показано на рисунке. Вы можете получить ясное представление из него.

введите здесь описание изображения


person joy oares    schedule 07.09.2016    source источник
comment
покажите свой код макета, что вы пробовали до сих пор   -  person A Honey Bustard    schedule 07.09.2016
comment
Я бы поместил их все в относительный макет без линейных макетов, чтобы я мог добавить это, как правило, и в то же время уменьшить глубину моего макета (и, таким образом, перерисовать) на единицу.   -  person Gabe Sechan    schedule 07.09.2016
comment
Если LinearLayout не делает того, что вы хотите, рассмотрите возможность использования другого макета. RelativeLayout может быть именно тем, что вам нужно.   -  person Dale Wilson    schedule 07.09.2016
comment
@DaleWilson Я хочу эту идею. Я не мог использовать RelativeLayout вместо LinearLayout в своем проекте.   -  person joy oares    schedule 07.09.2016
comment
@joyoares Вы пытались сделать этот макет?   -  person Jay Rathod RJ    schedule 07.09.2016
comment
@GabeSechan Я не мог использовать RelativeLayout вместо LinearLayout в своем проекте.   -  person joy oares    schedule 07.09.2016
comment
@joyoares Нет причин, по которым ты не можешь.   -  person Gabe Sechan    schedule 07.09.2016


Ответы (3)


Вы можете использовать вес макета. В ваших LinearLayouts добавьте android:weightSum=3

Затем назначьте это каждому макету: android:layout_weight=1

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

person techfly    schedule 07.09.2016

Наиболее эффективным решением является реализация относительного макета... но вы можете попробовать поместить свою кнопку B в другой независимый линейный макет и поместить их в относительный макет.

person user6642560    schedule 07.09.2016

Объясните подробнее об этом, но я надеюсь, что это поможет. измените ширину и высоту по своему усмотрению, высота кнопки B равна ((Высота кнопки A)*2)+верхнее поле кнопок

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
    android:id="@+id/btnZ"
    android:layout_width="216dp"
    android:layout_height="86dp"
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="24dp"
    android:text="Button Z"/>
<Button
    android:id="@+id/btnY"
    android:layout_width="216dp"
    android:layout_height="86dp"
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="24dp"
    android:text="Button Y"
    android:layout_below="@+id/btnZ"/>
<Button
    android:id="@+id/btnX"
    android:layout_width="216dp"
    android:layout_height="86dp"
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="24dp"
    android:text="Button X"
    android:layout_below="@+id/btnY"/>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
    android:id="@+id/btnA"
    android:layout_width="216dp"
    android:layout_height="86dp"
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="24dp"
    android:text="Button A"/>
<Button
    android:id="@+id/btnB"
    android:layout_width="216dp"
    android:layout_height="196dp"
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="24dp"
    android:text="Button B"
    android:layout_below="@+id/btnA"/>

person Meikiem    schedule 07.09.2016