【问题标题】:How to make children in a LinearLayout occupy the same ammount of space如何使LinearLayout中的子项占用相同的空间
【发布时间】:2014-07-14 17:15:17
【问题描述】:

我有一个带有四个孩子的 LinearLayout。每个孩子都是一个线性布局,带有一个 ImageView 和一个 TextView(在 ImageView 下方居中)。碰巧一个 TextView 比其他的要大一点,所以它比其他的会占用更多的空间,这会导致麻烦,因为我需要它们都具有完全相同的大小(因为我现在正在谈论的下面还有另一个 LinearLayout我所有的孩子都对齐)。这让我觉得很奇怪,因为我已经设置好了

android:layout_weight="1"

我认为这会使 LinearLayout 中的子项占据相同的空间。 这是我的代码,以便更好地理解:

<LinearLayout
                    android:id="@+id/line_1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_above="@+id/line_2"
                    android:layout_marginBottom="1dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:baselineAligned="false"
                    android:gravity="center_vertical" >

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_weight="1"
                        android:background="#FFFFFF"
                        android:gravity="center_horizontal">

                            <ImageView
                                android:layout_width="wrap_content"
                                android:layout_height="50dp"
                                android:src="@drawable/sights_selector" />

                            <TextView
                                android:id="@+id/corfu_textView"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Sights"
                                android:textSize="10sp" />

                    </LinearLayout>


                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_weight="1"
                        android:background="#FFFFFF"
                        android:gravity="center_horizontal">


                            <ImageView
                                android:layout_width="wrap_content"
                                android:layout_height="50dp"
                                android:src="@drawable/activities_selector" />

                           <TextView
                               android:id="@+id/epirus_textView"
                               android:layout_width="wrap_content"
                               android:layout_height="wrap_content"
                               android:text="Activities"
                               android:textSize="10sp" />

                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:layout_weight="1"
                        android:background="#FFFFFF"
                        android:orientation="vertical">

                            <ImageView
                                android:layout_width="wrap_content"
                                android:layout_height="50dp"
                                android:src="@drawable/accomodation_selector" />

                            <TextView
                                android:id="@+id/vlora_textView"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Accomodation"
                                android:textSize="10sp" />

                    </LinearLayout>

                   <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:layout_weight="1"
                        android:background="#FFFFFF"
                        android:orientation="vertical">

                            <ImageView
                                android:layout_width="wrap_content"
                                android:layout_height="50dp"
                                android:src="@drawable/villages_selector" />

                            <TextView
                                android:id="@+id/vlora_textView"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Villages"
                                android:textSize="10sp" />

                    </LinearLayout>

                </LinearLayout>

【问题讨论】:

  • 在父布局中使用权重总和在子布局中使用权重:)
  • 我已经为孩子设置了体重,如果没有声明体重总和,它会自动从父母孩子计算。这意味着它是 4,每个孩子有 1 个体重。所以这意味着它们必须占据相同的空间

标签: android xml android-layout android-ui


【解决方案1】:

我认为问题在于,除了其他答案之外,TextView 还具有 width="wrap_content"。试试这个:

<LinearLayout
                android:id="@+id/line_1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/line_2"
                android:layout_marginBottom="1dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:baselineAligned="false"
                android:gravity="center_vertical" >

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_weight="1"
                    android:background="#FFFFFF"
                    android:gravity="center_horizontal">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="50dp"
                            android:src="@drawable/sights_selector" />

                        <TextView
                            android:id="@+id/corfu_textView"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="Sights"
                            android:textSize="10sp" />

                </LinearLayout>


                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_weight="1"
                    android:background="#FFFFFF"
                    android:gravity="center_horizontal">


                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="50dp"
                            android:src="@drawable/activities_selector" />

                       <TextView
                           android:id="@+id/epirus_textView"
                           android:layout_width="match_parent"
                           android:layout_height="wrap_content"
                           android:text="Activities"
                           android:textSize="10sp" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:layout_weight="1"
                    android:background="#FFFFFF"
                    android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="50dp"
                            android:src="@drawable/accomodation_selector" />

                        <TextView
                            android:id="@+id/vlora_textView"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="Accomodation"
                            android:textSize="10sp" />

                </LinearLayout>

               <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:layout_weight="1"
                    android:background="#FFFFFF"
                    android:orientation="vertical">

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="50dp"
                            android:src="@drawable/villages_selector" />

                        <TextView
                            android:id="@+id/vlora_textView"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="Villages"
                            android:textSize="10sp" />

                </LinearLayout>

            </LinearLayout>

【讨论】:

    【解决方案2】:

    当您使用layout_weight 时。确保为水平方向的父级设置layout_width ="0dp",为垂直方向设置layout_height="0"。

    从here获取更多信息

    【讨论】:

      【解决方案3】:

      看下面的代码

      <LinearLayout
                          android:id="@+id/line_1"
                          android:layout_width="match_parent"
                          android:layout_height="wrap_content"
                          android:layout_above="@+id/line_2"
                          android:layout_marginBottom="1dp"
                          android:layout_marginLeft="10dp"
                          android:layout_marginRight="10dp"
                          android:baselineAligned="false"
                          android:gravity="center_vertical" >
      
                          <LinearLayout
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:orientation="vertical"
                              android:layout_weight="1"
                              android:background="#FFFFFF"
                              android:gravity="center_horizontal">
      
                                  <ImageView
                                      android:layout_width="wrap_content"
                                      android:layout_height="50dp"
                                      android:src="@drawable/sights_selector" />
      
                                  <TextView
                                      android:id="@+id/corfu_textView"
                                     android:layout_width="match_parent"
                                     android:layout_height="wrap_content"
                                     android:gravity="center"
                                      android:text="Sights"
                                      android:textSize="10sp" />
      
                          </LinearLayout>
      
      
                          <LinearLayout
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:orientation="vertical"
                              android:layout_weight="1"
                              android:background="#FFFFFF"
                              android:gravity="center_horizontal">
      
      
                                  <ImageView
                                      android:layout_width="wrap_content"
                                      android:layout_height="50dp"
                                      android:src="@drawable/activities_selector" />
      
                                 <TextView
                                     android:id="@+id/epirus_textView"
                                    android:layout_width="match_parent"
                                     android:layout_height="wrap_content"
                                     android:gravity="center"
                                     android:text="Activities"
                                     android:textSize="10sp" />
      
                          </LinearLayout>
      
                          <LinearLayout
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:gravity="center_horizontal"
                              android:layout_weight="1"
                              android:background="#FFFFFF"
                              android:orientation="vertical">
      
                                  <ImageView
                                      android:layout_width="wrap_content"
                                      android:layout_height="50dp"
                                      android:src="@drawable/accomodation_selector" />
      
                                  <TextView
                                      android:id="@+id/vlora_textView"
                                      android:layout_width="match_parent"
                                     android:layout_height="wrap_content"
                                     android:gravity="center"
                                      android:text="Accomodation"
                                      android:textSize="10sp" />
      
                          </LinearLayout>
      
                         <LinearLayout
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:gravity="center_horizontal"
                              android:layout_weight="1"
                              android:background="#FFFFFF"
                              android:orientation="vertical">
      
                                  <ImageView
                                      android:layout_width="wrap_content"
                                      android:layout_height="50dp"
                                      android:src="@drawable/villages_selector" />
      
                                  <TextView
                                      android:id="@+id/vlora_textView"
                                     android:layout_width="match_parent"
                                     android:layout_height="wrap_content"
                                     android:gravity="center"
                                      android:text="Villages"
                                      android:textSize="10sp" />
      
                          </LinearLayout>
      
                      </LinearLayout>
      

      【讨论】:

        【解决方案4】:

        您需要将LinearLayout 的layout_width 设置为0dp 之类的值,才能应用layout_weight 属性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多