layout_weight =“1”的按钮占用LinearLayout中的所有空格

时间:2011-05-26 16:09:22

标签: android button android-linearlayout

我想在线性布局中水平放置4个按钮。为了平均分配它们,我在每个按钮中设置android:layout_weight="1"。问题是按钮的宽度不受尊重,它们填满了整个线性布局。这适用于imageviews,为什么不使用按钮?

由于

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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

使用这些设置时,ImageView的行为与Button相似,但您可能看不到这可能是因为默认情况下,如果图像宽度不足以填充视图,则图像将居中。它就像一个框架,您将通过 HierarchyViewer (用于调试布局的SDK工具)看到它。

如果我得到你想要的东西,用按钮做同样的事情就必须将每个按钮都包含在一个布局中,这样封闭的布局将均匀地分享空间,按钮可以保持以重力为中心的那些布局,每个都有自己的宽度,在它们的两侧有一种灵活的“边缘”。 (未经测试但应该有效!)