1

Я хочу разместить 3 отдельных LinearLayout элементов управления внутри RelativeLayout и разделить доступную высоту между элементами управления 3 LinearLayout, чтобы все они имели четную высоту.Разделить высоту в 3 с LinearLayouts

Я пробовал, weightSum, а также gravity, но ни одна из этих работ, как я ошибочно предположил, что это будет. Я читал около layout_weight, но это не доступно в LinearLayout.

Я могу дать каждой из них статическую высоту, но как я могу узнать доступное пространство для каждого устройства, на котором может работать приложение?

Вот мой текущий код:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/bg_image"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="top" 
     android:weightSum="1"> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:weightSum="1"></LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="bottom" 
     android:weightSum="1"></LinearLayout> 

</RelativeLayout> 

Я все еще учусь Android развития, так что любая помощь/советы будут оценены.

+0

Я использую «layout_weight» в большинстве случаев – Nabin

ответ

1

Следующая раскладка будет иметь 3 LinearLayout s равномерно разделена вертикально

 <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:weightSum="3" 
      android:orientation="vertical" 
      android:background="@drawable/bg_image"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"> 
      </LinearLayout> 

    </LinearLayout> 
+0

Я принимаю это решение, поскольку я изначально хотел использовать LinearLayouts. –

0

Я прочитал о layout_weight, но это не доступно в LinearLayout

Нет вы не неправильно LinearLayout поддерживает назначая вес для отдельных детей с атрибутом android:layout_weight.

Я хочу, чтобы разместить 3 отдельные LinearLayout управления внутри RelativeLayout, и разделить доступную высоту между 3 управления LinearLayout, так что все они имеют даже высоту.

Лучше добавив 3 отдельных RelativeLayout внутри LinearLayout, а затем давая android:weightSum="3" родителю LinearLayout и android:layout_weight="1" каждому ребенку RelativeLayout.

+0

Почему вы могли бы предложить мне использовать Относительный вместо макетов? –

+0

Вы просили использовать относительную компоновку, чтобы я предположил, что вы устанавливаете относительную компоновку внутри линейного макета. Поэтому вы не приняли ответ? –

+0

Да. Хотя ваш soution решил мою первоначальную проблему, я не понимаю, почему я должен разместить RelativeLayout в LinearLayout. Я уверен, что LinearLayout лучше всего подходит для моих нужд, поскольку мне нужно расположить в нем некоторые значки. –

0

Это вы ищете

<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="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"></LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"></LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"></LinearLayout> 
</LinearLayout> 
+0

Спасибо, если бы я мог поддержать, я бы это сделал. –

+0

@android_noob не беспокоится :) – homer

Смежные вопросы