如何让右侧的孩子在水平布局的左侧孩子旁边流动

时间:2015-09-02 17:11:46

标签: android layout

外部父线性布局的宽度有限,还有三个孩子:

[child A][<-   child b           ->][child c]

对于孩子b,它有两个孩子

[<-   child b                ->]
[element 1][element 2]

希望孩子2由孩子1流动,如果没有足够的空间,那么孩子1应该显示省略号

[<-   child b                ->]
[element 1    xxx...][element 2]

尝试了以下布局,当孩子1太长时,它会占用所有空间并将孩子2推出视野。

[<-   child b                ->]
[element 1  xxxxxxxxxxxxxxxx...]

如果指定子1有

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

如果孩子1的内容很短,那么孩子2就不会流过,而孩子2则会向右侧。

[<-   child b                ->]
[element 1]          [element 2]

并且不想为子1提供硬编码的maxWidth。 有什么建议吗?     

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight=“3dp”
                android:ellipsize="end"
                android:singleLine="true"
                />

            <TextView                    
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:singleLine="true"/>
        </LinearLayout>

2 个答案:

答案 0 :(得分:0)

我能想到的最接近的事情,如果不是在代码中创建自定义ViewGroup或更改宽度。

使用wrap_content设置并将第一个TextView的maxWidth设置为安全数字,这样它就不会推开第二个TextView。

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxWidth="50dp"
        android:layout_marginRight=“3dp”
        android:ellipsize="end"
        android:singleLine="true"
        />

    <TextView                    
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"/>

</LinearLayout>

答案 1 :(得分:0)

只是有一个类似的案例,并且这种布局有效。

<LinearLayout

    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:orientation="horizontal"
    >

    <ImageView

        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginRight="8dp"
        android:layout_alignParentLeft="true"

        android:scaleType="centerCrop"
        android:src="@drawable/content"
        android:layout_gravity="center_vertical"

        />

    <TextView

        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="left|center_vertical"

        android:background="@color/white"
        android:ellipsize="end"
        android:gravity="left|center_vertical"
        android:singleLine="true"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size"


        />

    <TextView

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_alignParentRight="true"
        android:background="@color/white"
        android:gravity="center_vertical"
        android:textSize="@dimen/text_size"
        android:text="Tap to change"

        android:drawableRight="@drawable/icon_dropdown"
        />

</LinearLayout>