Why does the LinearLayout attribute “layout_weight” seem to do the opposite of what I think it should do?

后端 未结 3 1278
无人及你
无人及你 2021-01-18 07:58

I\'m following this tutorial to learn about linear layouts. Here\'s the main layout file:




        
相关标签:
3条回答
  • 2021-01-18 08:18

    layout_weight is normally used with layout_width or layout_height set to wrap_content. Try it, you'll see that it then increases the layout sized based on which view has the higher weight.

    Example

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    
      <LinearLayout
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_weight="2">
          <TextView
              android:text="red"
              android:gravity="center_horizontal"
              android:background="#aa0000"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent"
              android:layout_weight="1"/>
    
      </LinearLayout>
    
      <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
        <TextView
            android:text="row one"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
    
      </LinearLayout>
    
    </LinearLayout>
    
    0 讨论(0)
  • 2021-01-18 08:21

    Emphasis on any remaining space...

    I think it is a conflict between using fill_parent for height and the layout weight. Try setting android:layout_height="0dp" for both LinearLayouts.

    0 讨论(0)
  • 2021-01-18 08:31
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" android:weightSum="3">
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#aa0000"
                android:gravity="center_horizontal"
                android:text="red" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#00aa00"
                android:gravity="center_horizontal"
                android:text="green" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#0000aa"
                android:gravity="center_horizontal"
                android:text="blue" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#aaaa00"
                android:gravity="center_horizontal"
                android:text="yellow" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical" >
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="row one"
                android:textSize="15pt" />
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="row two"
                android:textSize="15pt" />
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="row three"
                android:textSize="15pt" />
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="row four"
                android:textSize="15pt" />
        </LinearLayout>
    
    </LinearLayout>
    

    enter image description here

    Specify android:weightSum for the parent layout and also android:layout_height="0dp" for child layouts. Please try this. Hope this would help.

    0 讨论(0)
提交回复
热议问题