1

我在构建具有三个子级(其中两个具有可变尺寸)的 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

4 回答 4

1

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

android:layout_weight="1"

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

于 2013-08-14T17:28:05.267 回答
1

在你的第一个 textView 上试试这个:

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

这将使 View 在另外两个包装其内容时占用剩余空间

于 2013-08-14T16:39:51.537 回答
0

I assume you'll want to specify the LinearLayout orientation:

android:orientation="horizontal"

But also, try using weights in your TextViews:

android:layout_weight="1"

(especially in the 2nd and 3rd TextViews. Try other values instead of "1" as well, to test).

Also, if you want to stretch columns, try using TableLayout, as in this post.

于 2013-08-14T16:40:45.380 回答
0

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

因为您在水平行中使用这些视图,请将layout_width您希望具有可变大小的视图设置为 0dp。然后添加一个layout_weight属性来调整大小如何变化,直到它看起来像你想要的。

于 2013-08-14T16:40:22.137 回答