我的应用上有以下多列布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mcare="http://schemas.android.com/apk/res/com.vodafone.mCare"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3" >
<LinearLayout
android:id="@+id/container1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:id="@+id/label1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello world" />
</LinearLayout>
<LinearLayout
android:id="@+id/container2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:id="@+id/label2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hi" />
<LinearLayout
android:id="@+id/container3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:id="@+id/label3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
...etc...
</LinearLayout>
当有足够的空间时,所有列都应该均匀分布。
此处的目标是强制container1
的(并且只有container1
)个最小宽度以匹配其子视图的相同宽度(label1
)。无论是否有足够的空间显示其内容,所有其他列应在整个可用空间中均匀调整大小。这是我正在尝试做的粗略图表:
我尝试了很多不同的方法但到目前为止似乎没有任何工作。有任何想法吗?提前感谢任何建议。
编辑:请注意,上面的布局只是应用程序实际布局的简化版本。所有容器实际上都有更多的View内部 - container1
除外。换句话说,只有label1
可以移动到其各自的容器之外。
答案 0 :(得分:-1)
删除TextView
内的嵌套LinearLayout
。
试试这样:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<TextView
android:id="@+id/label1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:background="@android:color/holo_red_light"
android:text="Hello world" />
<TextView
android:id="@+id/label2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:background="@android:color/holo_red_light"
android:text="Hi" />
<TextView
android:id="@+id/label3"
android:layout_width="0dp"
android:gravity="center_horizontal"
android:background="@android:color/holo_red_light"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Hi" />
</LinearLayout>
********Edited Answer*************
I have try it with `TextView` inside `LinearLayout` as well, it's working fine:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/label1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="@android:color/holo_red_light"
android:text="Hello world" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/label2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="@android:color/holo_red_light"
android:text="Hi" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/label3"
android:layout_width="match_parent"
android:gravity="center_horizontal"
android:background="@android:color/holo_red_light"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
</LinearLayout>
如果没有完整的XML文件,我们无法帮助您。