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