4

Я пытаюсь достигнуть следующий макет в Android с главным заголовком в верхней части и трех роликов на равном расстоянии друг от друга ниже, с некоторыми кнопками ниже, что:вложенности RelativeLayouts в LinearLayout

enter image description here

Я был в состоянии чтобы выполнить это с помощью следующего XML, но я чувствую, что я не с помощью RelativeLayout и LinearLayout правильно:

<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:background="#cfff" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <TextView 
     android:id="@+id/text_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:layout_weight="1" 
     android:text="Title" 
     android:textSize="80sp"/> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_weight=".5"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1"> 

      <TextView 
       android:id="@+id/text_caption1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Subheading" 
       android:gravity="center" 
       android:textSize="18sp"/> 

      <TextView 
       android:id="@+id/text_number1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/text_caption1" 
       android:text="1" 
       android:layout_weight="1" 
       android:textSize="80sp" 
       android:gravity="center"/> 

     </RelativeLayout> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1"> 

      <TextView 
       android:id="@+id/text_caption2" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Subheading" 
       android:gravity="center" 
       android:textSize="18sp"/> 

      <TextView 
       android:id="@+id/text_number2" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/text_caption2" 
       android:text="10" 
       android:layout_weight="1" 
       android:textSize="80sp" 
       android:gravity="center"/> 

     </RelativeLayout> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1"> 

      <TextView 
       android:id="@+id/text_caption3" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Subheading" 
       android:gravity="center" 
       android:textSize="18sp"/> 

      <TextView 
       android:id="@+id/text_sets" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/text_caption3" 
       android:text="3" 
       android:layout_weight="1" 
       android:textSize="80sp" 
       android:gravity="center"/> 

     </RelativeLayout> 
    </LinearLayout> 

    <!-- Button1 --> 
    <Button 
     android:id="@+id/button1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:text="Button1" 
     android:textSize="20sp"/> 

    <!-- Button2 --> 
    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:text="Button2" 
     android:textSize="20sp" /> 

</LinearLayout> 

Я несколько сосредоточившись на субпозиции части, хотя какие-либо предложения по OV приветствуется макет. Поэтому я использовал 3 разных RelativeLayouts, чтобы помещать подзаголовки с их соответствующими номерами и вставлял их в горизонтальный LinearLayout, чтобы распределить их друг от друга по горизонтали.

Это похоже на создание проблемы, поскольку Android Studio жалуется, что мое использование layout_weight внутри вложенных макетов плохо для производительности. Однако, когда я избавляюсь от layout_weight, все разваливается, и я вижу только «Title» и одну подзаголовок. Мне также интересно, могу ли я сделать это более элегантно только с одним RelativeLayout и без вложенности, но я не вижу, как закодировать что-то вроде этого без использования LinearLayout.

Заранее благодарим за любые предложения!

ответ

2

Да, вы можете сделать это более элегантно только с одним RelativeLayout и не вложенности Я надеюсь, что это то, что вы ищете

<RelativeLayout 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:background="#cfff" 
    tools:context=".MainActivity"> 

    <TextView 
     android:id="@+id/text_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="Title" 
     android:textSize="80sp" /> 

    <TextView 
     android:id="@+id/text_caption1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/text_number1" 
     android:text="Subheading" 
     android:textSize="18sp" /> 

    <TextView 
     android:id="@+id/text_number1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:gravity="left" 
     android:text="1" 
     android:textSize="80sp" /> 


    <TextView 
     android:id="@+id/text_caption2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/text_number2" 
     android:gravity="center" 
     android:text="Subheading" 
     android:textSize="18sp" /> 

    <TextView 
     android:id="@+id/text_number2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:gravity="center" 
     android:text="2" 
     android:textSize="80sp" /> 

    <TextView 
     android:id="@+id/text_caption3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/text_number3" 
     android:gravity="right" 
     android:text="Subheading" 
     android:textSize="18sp" /> 

    <TextView 
     android:id="@+id/text_number3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:gravity="right" 
     android:text="3" 
     android:textSize="80sp" /> 


    <Button 
     android:id="@+id/button1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button2" 
     android:text="Button1" 
     android:textSize="20sp" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:text="Button2" 
     android:textSize="20sp" /> 
    </RelativeLayout> 
+0

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

+0

Чтобы уточнить, я имею в виду выравнивание по центру подзаголовков и чисел в их соответствующих столбцах (влево, в центре, вправо). – rsa

1

попробовать это ...

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:weightSum="10"> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="0dip" 
    android:layout_weight="5" 
    android:text="TITLE" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:textSize="45sp" 
    android:id="@+id/textView64" /> 

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="3" 
    android:weightSum="10"> 


    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="3.25" 
     android:gravity="center" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Subheading" 
      android:id="@+id/textView66" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="1" 
      android:textSize="50sp" 
      android:id="@+id/textView67" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dp" 
     android:layout_weight="3.5" 
     android:gravity="center" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="SubHeading" 
      android:id="@+id/textView68" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="2" 
      android:textSize="50sp" 
      android:id="@+id/textView69" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="3.25" 
     android:gravity="center" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="SubHeading" 
      android:id="@+id/textView70" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="3" 
      android:textSize="50sp" 
      android:id="@+id/textView71" /> 
    </LinearLayout> 
</LinearLayout> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="0dip" 
    android:layout_weight="0.8" 
    android:text="New Button" 
    android:id="@+id/button" 
    android:layout_gravity="center_horizontal" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="0dip" 
    android:layout_weight="0.8" 
    android:text="New Button" 
    android:id="@+id/button1" 
    /> 

+0

Спасибо, это решает проблему с layout_weight, но мне любопытно, возможно ли это с RelativeLayout вместо вложенных LinearLayouts. – rsa

+0

на основе соответствия. Но подумайте, что вам нужно помнить, что relativelayout не имеет весов, поэтому внутренние представления относительной компоновки не могут иметь матовую весу. Если вы хотите использовать вес макета для всех ваших представлений вашего ребенка, вам нужно использовать linearlayout. – Vishwa

+0

@rsa тогда, пожалуйста, можете принять ответ – Vishwa

1

Изменить android:weightSum и android:layout_weight в соответствии с вашим необходимым соотношением ...

<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:background="#cfff" 
android:orientation="vertical" 
tools:context=".MainActivity" 
android:weightSum="4"> 

<TextView 
    android:id="@+id/text_title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_weight="1.5" 
    android:text="Title" 
    android:textSize="80sp"/> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_weight="1.5" 
    android:weightSum="3"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     <TextView 
      android:id="@+id/text_caption1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Subheading" 
      android:gravity="center" 
      android:textSize="18sp"/> 

     <TextView 
      android:id="@+id/text_number1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/text_caption1" 
      android:text="1" 
      android:layout_weight="1" 
      android:textSize="80sp" 
      android:gravity="center"/> 

    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     <TextView 
      android:id="@+id/text_caption2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Subheading" 
      android:gravity="center" 
      android:textSize="18sp"/> 

     <TextView 
      android:id="@+id/text_number2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/text_caption2" 
      android:text="10" 
      android:layout_weight="1" 
      android:textSize="80sp" 
      android:gravity="center"/> 

    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     <TextView 
      android:id="@+id/text_caption3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Subheading" 
      android:gravity="center" 
      android:textSize="18sp"/> 

     <TextView 
      android:id="@+id/text_sets" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/text_caption3" 
      android:text="3" 
      android:layout_weight="1" 
      android:textSize="80sp" 
      android:gravity="center"/> 

    </RelativeLayout> 
</LinearLayout> 

<!-- Button1 --> 
<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Button1" 
    android:layout_weight=".5" 
    android:textSize="20sp"/> 

<!-- Button2 --> 
<Button 
    android:id="@+id/button2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight=".5" 
    android:text="Button2" 
    android:textSize="20sp" /> 

</LinearLayout> 

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

  • Нет связанных вопросов^_^