Android水平布局,右侧动态扩展TextView

时间:2012-02-15 11:38:40

标签: android android-layout

我需要创建一个Android水平布局设计,左侧是垂直LinearLayout,右侧是TextView,如下所示:

¦==========================¦
¦      A1     ¦            ¦
¦             ¦     BB     ¦
¦      A2     ¦            ¦
¦==========================¦

左侧的垂直LinearLayout包含两个TextView元素,A和B部分占据整个屏幕宽度。所有TextView元素都包含动态分配的文本内容。

我希望TextView B的宽度由其内容决定,以便它展开或缩小以显示其整个内容(不能包装并且必须以单行显示),而左侧LinearLayout A的宽度由TextView B的宽度决定,如下所示:

TextView B扩展:

¦==========================¦
¦     A1    ¦              ¦
¦           ¦     BBB      ¦
¦     A2    ¦              ¦
¦==========================¦

TextView B收缩:

¦==========================¦
¦      A1       ¦          ¦
¦               ¦    B     ¦
¦      A2       ¦          ¦
¦==========================¦

我的想法是使用这样的LinearLayout

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/A1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/A2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <TextView
        android:id="@+id/B"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:singleLine="true" />

</LinearLayout>

但是使用上面的布局,如果TextView A1的内容足够长,则占据整个屏幕宽度,TextView B消失。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您应该使用正确的textview来包装内容,并使left linearlayout使用weight属性作为

android:layout_weight="1.0"

这将告诉linearlayout占用剩余空间。但是如果文本太长,要么减小文本的大小,要么缩小文本。

答案 1 :(得分:1)

为此我建议使用RelativeLayout

我在pastebin中发布了一个显示示例的代码 http://pastebin.com/Ttc42C69

您可以使用layout_margin来改善这一点。

使用......

的好处
android:layout_alignRight="@id/aonetext"
android:layout_alignLeft="@id/aonetext"

...在atwotext中,如果你想调整a1和a2的边距,你只需要在a1中执行此操作,它将影响两者

//修改

另一个积极影响:你保存在xml层次上。

答案 2 :(得分:0)

为什么不尝试使用getSuggestedMinimumWidth()来设置TextView A的宽度?

我想说:

a.setWidth(a.getSuggestedMinimumWidth());