LinearLayout layout_weight

时间:2011-07-05 16:39:05

标签: android layout android-linearlayout

我有一个用行填充的ListView。这些行来自XML文件,如下所示:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dip"
android:weightSum="100">
<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/columnA"
    android:layout_weight="30"
    android:layout_gravity="center"/>  
<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/columnB" 
    android:layout_weight="30"
    android:layout_gravity="center"/>
<ImageView 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:src="@drawable/icon" 
    android:id="@+id/columnC"
    android:layout_weight="10"
    android:layout_gravity="center"
    >
</ImageView>       
<CheckBox
    android:layout_width="0dp"
    android:layout_height="wrap_content" 
    android:id="@+id/columnD"
    android:layout_weight="30"
    android:layout_gravity="center"/>

问题是我希望columnC项和columnB项非常接近,因此我的行在三个部分中等间隔,即:columnA,(columnB + columnC)然后是columnD。我试图通过使用layout_weight来实现这一点,但是上面的代码似乎有相反的效果。 columnA和columnB在左边非常挤压,C列似乎在一个大空间中浮动,然后columnD位于靠近columnC的位置,右边有太多空间。我究竟做错了什么? :■

2 个答案:

答案 0 :(得分:2)

试一试。您基本上可以根据重量/总重量计算每个视图“想要”的空间大小。您不必尝试使它们等于100。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="8dip"
    android:weightSum="100">
<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/columnA"
    android:layout_weight="2"
    android:layout_gravity="center"/>  
<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/columnB" 
    android:layout_weight="1"
    android:layout_gravity="center"/>
<ImageView 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:src="@drawable/icon" 
    android:id="@+id/columnC"
    android:layout_weight="1"
    android:layout_gravity="center"
    >
</ImageView>       
<CheckBox
    android:layout_width="0dp"
    android:layout_height="wrap_content" 
    android:id="@+id/columnD"
    android:layout_weight="2"
    android:layout_gravity="center"/>

答案 1 :(得分:0)

我认为你希望columnC和columnB具有相同的权重,但是你将它们设置为不同。

尝试

columnA:重量= 2

columnB:重量= 1

columnC:重量= 1

columnD:重量= 2

我对体重属性的经验非常有限,但我认为这是你如何得到你想要的结果。

如果您仍然遇到问题,如果您可以发布屏幕截图以及您希望它的外观,可以帮助我们。