我需要创建一个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消失。
有什么想法吗?
答案 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());