2011-05-26 72 views
0

我想在一个线性布局中水平放置4个按钮。为了平均分配它们,我在每个按钮中设置了android:layout_weight="1"。问题是按钮的宽度不被尊重,并且它们填充整个线性布局。这适用于图像浏览,为什么不使用按钮?layout_weight =“1”的按钮占据LinearLayout中的所有空间

感谢

enter image description here

<LinearLayout android:orientation="horizontal" 
    android:layout_width="fill_parent" android:layout_height="50dp" android:background="#FFFFFF"> 
    <Button android:id="@+id/btn_sort_pert" 
     android:layout_width="90dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:gravity="center" 
     android:layout_weight="1" android:text="@string/pertinence" 
     android:textSize="14sp" android:textColor="#FFFFFF" 
     android:background="@drawable/btn_sort" /> 
    <Button android:id="@+id/btn_sort_dist" 
     android:layout_width="90dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:gravity="center" 
     android:layout_weight="1" android:text="@string/distance" 
     android:textSize="14sp" android:textColor="#FFFFFF" 
     android:background="@drawable/btn_sort" /> 
    <Button android:id="@+id/btn_sort_prix" 
     android:layout_width="90dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:gravity="center" 
     android:layout_weight="1" android:text="@string/prix" 
     android:textSize="14sp" android:textColor="#FFFFFF" 
     android:background="@drawable/btn_sort" /> 
    <Button android:id="@+id/btn_refine" 
     android:layout_width="32dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:layout_weight="1" android:background="@drawable/btn_affiner" /> 
</LinearLayout> 
+0

我的模拟器上的代码没有问题。你可以附上截图吗? – Kamen 2011-05-26 16:15:05

回答

2

编辑

您需要添加像空的观点:

<LinearLayout android:orientation="horizontal" 
    android:layout_width="fill_parent" android:layout_height="50dp" android:background="#FFFFFF"> 
    <Button android:id="@+id/btn_sort_pert" 
     android:layout_width="90dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:gravity="center" 
     android:text="@string/pertinence" 
     android:textSize="14sp" android:textColor="#FFFFFF" 
     android:background="@drawable/btn_sort" /> 
     <View android:layout_width="0dp" android:layout_height="1dp" 
     android:layout_weight="1"> 
    <Button android:id="@+id/btn_sort_dist" 
     android:layout_width="90dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:gravity="center" 
     android:text="@string/distance" 
     android:textSize="14sp" android:textColor="#FFFFFF" 
     android:background="@drawable/btn_sort" /> 
    <View android:layout_width="0dp" android:layout_height="1dp" 
     android:layout_weight="1"> 
    <Button android:id="@+id/btn_sort_prix" 
     android:layout_width="90dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:gravity="center" 
     android:text="@string/prix" 
     android:textSize="14sp" android:textColor="#FFFFFF" 
     android:background="@drawable/btn_sort" /> 
    <View android:layout_width="0dp" android:layout_height="1dp" 
    android:layout_weight="1"> 
    <Button android:id="@+id/btn_refine" 
     android:layout_width="32dp" android:layout_height="31dp" 
     android:layout_gravity="center_vertical" android:background="@drawable/btn_affiner" /> 
</LinearLayout> 
+0

它使按钮不可见,我猜是因为它们没有高度...我的代码工作,如果我用ImageViews替换按钮。 – jul 2011-05-26 16:25:09

+0

@jul:他可能错过了它是水平布局的事实,请尝试width = 0px – bigstones 2011-05-26 16:27:24

+0

编辑答案以纠正bigstones指出的错误。 – neteinstein 2011-05-26 17:02:20

2

随着这些设置ImageView是behavin g像Button,但是你没有看到这可能是因为默认情况下,如果图像没有填充宽度,图像将居中。这就像一个框架,你会看到HierarchyViewer(一个用于调试布局的SDK工具)。

如果我得到你想要的,要做到这一点,你必须将每个按钮放在一个布局中,这样封闭的布局将平均分配空间,并且按钮可以保持以重心为中心每种布局都有自己的宽度,侧面有一种灵活的“边缘”。 (未测试,但应该工作!)

+2

另一种我用过的解决方案是在按钮之间插入空视图,并给出空视图layout_weights。按钮将保持它们的宽度,而空视图将平均填充剩余空间。你甚至可以尝试同时给视图和按钮layout_weights,只是给按钮一个比空视图更大的权重。这将适用于更多的屏幕尺寸和密度。 – kcoppock 2011-05-26 18:08:03

相关问题