如何使LinearLayout的元素不填充权重= 1 width = 0的所有可能空间

时间:2017-04-23 14:09:03

标签: android android-linearlayout

我有下一个布局:

 <LinearLayout
            android:id="@+id/work_item_layout"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:gravity="left"
            android:background="@android:drawable/list_selector_background"
            android:layout_height="wrap_content">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 android:textSize="6sp"
                android:id="@+id/work_item_update"/>
        <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:textSize="16sp"
                android:maxLines="2"
                android:text="LALALALLALLALALALALALALLA...."
                android:id="@+id/work_item_title">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:textSize="13sp"
                android:id="@+id/work_item_rate_and_size"/>

    </LinearLayout>

问题是中心TextView填充所有可用空间,但我希望它是最小可能的空间。如果我使中心TextView&#34; warp_content&#34;的宽度如果中心足够大以填满所有空间,那么最后一个将被删除。 我应该如何使中心元素宽度像warp_content,但如果中心文本超过1行(我希望最后一个TextView文本将在中央TextView文本旁边),则不能删除最后一个

2 个答案:

答案 0 :(得分:0)

尝试指定权重,以便您可以指定希望视图占据的空间分数

答案 1 :(得分:0)

我认为你正在使用权重完全倒退。尝试为顶部和底部android:weight="1"指定TextView,并为中间指定仅指定“wrap_content”。

或者,您可以为每个外部视图指定较大的权重(4或5),为内部视图指定较小的权重(1)。

重量优先。如果为视图指定权重,则LinearLayout将使用它(优先于其他大小规范)来调整视图大小。如果同时指定权重和其他大小,则LinearLayout大小计算过于昂贵。这就是为什么你会在IDE中看到一个建议,告诉你如果你指定一个权重,就明确地将大小设置为“0”。

指定非零权重可以有用。如果有空余空间,则权重优先,LinearLayout大小计算算法不会使视图小于其指定大小。这意味着您可以说,或多或少“将此视图设为屏幕的1/3,或12像素,以较大者为准”