Android水平布局,右侧动态扩展文本视图

Android水平布局,右侧动态扩展文本视图,android,android-layout,Android,Android Layout,我需要创建一个Android水平布局设计,左侧为垂直LinearLayout,右侧为TextView,如下所示: ¦==========================¦ ¦ A1 ¦ ¦ ¦ ¦ BB ¦ ¦ A2 ¦ ¦ ¦==========================¦ 左侧的垂直LinearLayout包含两个TextView元素,A和B部分占据整个屏幕宽度。所

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

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

我希望
TextView
B的宽度由其内容决定,这样它可以展开或收缩以显示其整个内容(不能换行,必须在一行中显示),而左侧
LinearLayout
a的宽度由
TextView
B的宽度决定,如下所示:

¦==========================¦
¦      A1     ¦            ¦
¦             ¦     BB     ¦
¦      A2     ¦            ¦
¦==========================¦
TextView
B展开:

¦==========================¦
¦     A1    ¦              ¦
¦           ¦     BBB      ¦
¦     A2    ¦              ¦
¦==========================¦
TextView
B收缩:

¦==========================¦
¦      A1       ¦          ¦
¦               ¦    B     ¦
¦      A2       ¦          ¦
¦==========================¦
我的想法是使用
线性布局
,如下所示:

<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将消失


有什么想法吗?

为什么不尝试使用getSuggestedMinimumWidth()设置
文本视图的宽度

我想说:

a.setWidth(a.getSuggestedMinimumWidth());

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

我想说:

a.setWidth(a.getSuggestedMinimumWidth());

您应该使右侧的textview包装内容,并使左侧的linearlayout使用权重属性作为

android:layout_weight="1.0"

这将告诉linearlayout占用剩余空间。但是,如果文本太长,可以减小文本的大小或将其删除。

您应该使用右侧文本视图包装内容,并使用左侧线性布局作为权重属性

android:layout_weight="1.0"

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

为此,我建议使用RelativeLayout

我在pastebin中发布了一个代码,显示了一个示例

您可以通过使用版面空白来改进这一点

使用

android:layout_alignRight="@id/aonetext"
android:layout_alignLeft="@id/aonetext"
。。。在atwotext中,如果要调整a1和a2的边距,只需在a1中进行调整,这将影响两者

//编辑


另一个积极的影响是:在xml层次结构级别上进行保存。

为此,我建议使用RelativeLayout

我在pastebin中发布了一个代码,显示了一个示例

您可以通过使用版面空白来改进这一点

使用

android:layout_alignRight="@id/aonetext"
android:layout_alignLeft="@id/aonetext"
。。。在atwotext中,如果要调整a1和a2的边距,只需在a1中进行调整,这将影响两者

//编辑


另一个积极的影响是:您可以在xml层次结构的级别上进行保存。

+1是好的替代解决方案。然而,我更喜欢坚持我原来的
LinearLayout
解决方案,我发现它更容易管理。根据romain guy的说法,应该知道权重参数可能会导致用户界面体验变慢,因为它的测量值是好的两倍,我可能会考虑更改布局。不过,我对您的代码做了一些更改:。对于好的替代解决方案,id为
@+id/atwotext
+1的
文本视图的布局发生了变化。然而,我更喜欢坚持我原来的
LinearLayout
解决方案,我发现它更容易管理。根据romain guy的说法,应该知道权重参数可能会导致用户界面体验变慢,因为它的测量值是好的两倍,我可能会考虑更改布局。不过,我对您的代码做了一些更改:。更改出现在id为
@+id/atwotext的
文本视图
的布局中