Android 具有3个子变量维度的线性布局

Android 具有3个子变量维度的线性布局,android,android-layout,Android,Android Layout,我在构建一个包含三个子元素(其中两个维度可变)的androidxml布局时遇到了一个问题,当跨越其宽度时,其中一个子元素具有优先权 <LinearLayout android:id="@+id/LinearLayout" android:layout_height="wrap_content" android:layout_width="match_parent" > <TextView android:id="@+id/fir

我在构建一个包含三个子元素(其中两个维度可变)的androidxml布局时遇到了一个问题,当跨越其宽度时,其中一个子元素具有优先权

<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”。当没有足够的空间时,要求只有firstTextView缩小其宽度(类似于:“bla 1 bla…,bla 2 bla 2 bla 2”)。请记住,第三个TextView的宽度是可变的,因此它可能只包含“bla2”,并且必须紧挨着第二个TextView,而第二个TextView又必须紧挨着第一个TextView

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


谢谢。

在您的第一个文本视图中尝试以下操作:

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

当另外两个视图的内容被包装时,这将使视图占用剩余空间。您应该能够使用这些视图的
布局权重
属性来完成此操作<代码>布局重量
控制视图之间的多余(即未使用)PIX属性。它允许您设置权重,如百分比,这些视图将如何分配未使用的像素


由于您在水平行中使用这些视图,请将要具有可变大小的视图的
layout\u width
设置为0dp。然后添加一个
layout\u weight
属性来调整大小的变化,直到它看起来像您想要的

我假设您希望指定LinearLayout方向:

android:orientation="horizontal"
但也可以尝试在文本视图中使用权重:

android:layout_weight="1"
(特别是在第二和第三个文本视图中。请尝试其他值,而不是“1”,以进行测试)


另外,如果要拉伸列,请尝试使用TableLayout,如中所示。

确保每个视图都增加了布局权重,如下所示

android:layout_weight="1"

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

您的线性布局不指定方向。它不必指定方向。默认情况下它是水平的(这是我想要的)。我尝试过使用权重,问题是,(因为文本视图会占用任何额外的空间),文本不会按预期显示,即“bla 1 bla 1 bla 1,bla 2 bla 2 bla 2”。从第一个文本视图到第二个文本视图,再到第三个文本视图,它会被隔开。我不知道你的意思。如果只在可变大小的子元素上设置布局权重,则只有这些子元素会调整以占用未使用的空间。如果只对不希望扩展的内容使用layou_width=wrap_内容,它们将不会扩展以填充空间。只有secondTextView的内容不会发生变化。第一个和第三个文本视图都将显示。如果有足够的空间,通过在这两个文本视图上设置权重,第一个文本视图将扩展其宽度,从而在第一个和第二个文本视图之间产生间距(打破假装的“bla 1 bla 1 bla 1,bla 2 bla 2 bla 2”显示)。难道你不能用
重力
控制文本在视图中的位置吗?如果你试图给人一种错觉,认为view1是view2的一部分,因此逗号是句子的一部分,那么你能将文本向右对齐,使其与视图的那一侧相对,而不是与视图的左侧或中间相对吗?我不这么认为。理想的外观是这三个文本视图是同一个句子的一部分。我不认为仅仅通过调整重力就可以做到这一点,因为它是留给所有人的,因为我希望所有三个文本视图的内容都按顺序排列。当空间过大时,向右调整重力会增加另一个问题。