当我们在使用layout_weight属性时没有为layout_width或layout_height指定0dp时会发生什么?

时间:2017-09-22 07:50:23

标签: android android-linearlayout

我有一个项目的以下代码

         <LinearLayout
                android:id="@+id/linear"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/relative"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/label_friend_count"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="0.6"
                        android:gravity="end"
                        android:paddingTop="@dimen/padding_10dp"
                        android:text="@string/lbl_lead_count"
                        android:textColor="@color/color_grey_icon"
                        android:textSize="16sp" />


                    <TextView
                        android:id="@+id/txt_lead_count"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginStart="@dimen/padding_10dp"
                        android:layout_weight="0.4"
                        android:gravity="start"
                        android:paddingTop="@dimen/padding_10dp"
                        android:textColor="@color/color_323232"
                        android:textSize="16sp"
                        android:layout_marginLeft="@dimen/padding_10dp" />
                 </LinearLayout>

此处TextViews并未将宽度指定为0dp,并指定值为0.6和0.4的layout_weight属性。根据教程我已经完成了第1个{标识为TextView的{​​1}}占据空间的60%,标识为label_friend_count的第二TextView应占据空间的40%。但是在这段代码中,第一个txt_lead_count占用的空间更少,第二个TextView占用更多的空间......任何人都可以告诉我这是怎么回事?是因为未将TextView指定为layout_width以及何时使用0dp的浮点值?

这是我的布局快照

This is the Snapshot of the layout

3 个答案:

答案 0 :(得分:1)

android:weightSum="1"添加到您的LinearLayout并在0dp中使用match_parent宽度而不是TextView来获得所需的结果

<LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:weightSum="1"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/label_friend_count"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_weight="0.6"
                    android:gravity="end"
                    android:paddingTop="@dimen/padding_10dp"
                    android:text="@string/lbl_lead_count"
                    android:textColor="@color/color_grey_icon"
                    android:textSize="16sp" />


                <TextView
                    android:id="@+id/txt_lead_count"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginStart="@dimen/padding_10dp"
                    android:layout_weight="0.4"
                    android:gravity="start"
                    android:paddingTop="@dimen/padding_10dp"
                    android:textColor="@color/color_323232"
                    android:textSize="16sp"
                    android:layout_marginLeft="@dimen/padding_10dp" />
             </LinearLayout>

答案 1 :(得分:1)

  

android:layout_weight表示分配了LinearLayout中多少额外空间   到与这些LayoutParams相关联的视图。如果视图指定0   不应该被拉长。否则额外像素将按比例分配   在权重大于0的所有观点中。

设置 android:layout_width="0dp"

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal"
android:weightSum="1">                

        <TextView
        android:id="@+id/label_friend_count"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="0.6"
        android:gravity="end"
        android:paddingTop="@dimen/padding_10dp"
        android:text="@string/lbl_lead_count"
        android:textColor="@color/color_grey_icon"
        android:textSize="16sp" />


        <TextView
        android:id="@+id/txt_lead_count"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="@dimen/padding_10dp"
        android:layout_weight="0.4"
        android:gravity="start"
        android:paddingTop="@dimen/padding_10dp"
        android:textColor="@color/color_323232"
        android:textSize="16sp"
        android:layout_marginLeft="@dimen/padding_10dp" />

答案 2 :(得分:0)

您可以查看此内容。 您可以将layout_width用作wrap_content或0dp。 布局的默认权重为1。

<LinearLayout
                android:id="@+id/linear"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/relative"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/label_friend_count"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="0.6"
                        android:gravity="end"
                        android:paddingTop="@dimen/padding_10dp"
                        android:text="@string/lbl_lead_count"
                        android:textColor="@color/color_grey_icon"
                        android:textSize="16sp" />


                    <TextView
                        android:id="@+id/txt_lead_count"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginStart="@dimen/padding_10dp"
                        android:layout_weight="0.4"
                        android:gravity="start"
                        android:paddingTop="@dimen/padding_10dp"
                        android:textColor="@color/color_323232"
                        android:textSize="16sp"
                        android:layout_marginLeft="@dimen/padding_10dp" />
                 </LinearLayout>
 </LinearLayout>