LinearLayout具有3个可变维度的子项

时间:2013-08-14 16:35:29

标签: android android-layout

我遇到了一个问题,即构建一个包含三个子节点的Android XML布局(其中两个具有可变维度),在跨越宽度时优先考虑其中一个子节点。

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_height="wrap_content"
    android:layout_width="match_parent" >

    <TextView
        android:id="@+id/firstTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="end"
        android:text="bla 1 bla 1 bla 1" />

    <TextView
        android:id="@+id/secondTextView"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text=", " />

    <TextView
        android:id="@+id/thirdTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="bla 2 bla 2 bla 2"/>

</LinearLayout>

问题是,我需要这样显示:“bla 1 bla 1 bla 1,bla 2 bla 2 bla 2”。要求当没有足够的空间时,只有firstTextView缩小其宽度(例如:“bla 1 bla ...,bla 2 bla 2 bla 2”)。请记住,thirdTextView具有可变宽度,因此它可能只包含“bla 2”,并且必须紧挨着secondTextView,而secondTextView又必须位于firstTextView的右侧。

我试图避免以编程方式调整宽度。

感谢。

4 个答案:

答案 0 :(得分:1)

在第一个textView上试试这个:

android:layout_width="0dp"
 android:layout_weight="1"

这将使视图在另外两个包含其内容时占用剩余空间

答案 1 :(得分:1)

确保每个视图都添加layout_weight,就​​像这样

android:layout_weight="1"

您也可以使用值而不是一个,并获得不同大小的视图

答案 2 :(得分:0)

您应该能够使用这些视图的layout_weight属性来完成此操作。 layout_weight控制视图之间如何过量(即未使用)像素。它允许您设置一个权重,如百分比,这些视图将如何分配未使用的像素。

因为您在水平行中使用这些视图,所以将要变量大小的layout_width设置为0dp。然后添加layout_weight属性以调整大小的变化,直到它看起来像你想要的那样。

答案 3 :(得分:0)

我假设您要指定LinearLayout方向:

android:orientation="horizontal"

但是,请尝试在TextViews中使用权重

android:layout_weight="1"

(特别是在第二和第三个TextViews中。尝试其他值而不是“1”来测试)。

此外,如果您想拉伸列,请尝试使用 TableLayout ,如this post中所示。