【问题标题】:Buttons with layout_weight="1" take all space in LinearLayout带有 layout_weight="1" 的按钮占据了 LinearLayout 中的所有空间
【发布时间】:2011-05-27 02:44:54
【问题描述】:

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

谢谢

<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>

【问题讨论】:

  • 我的模拟器上的代码没有问题。可以附上截图吗?

标签: android button android-linearlayout


【解决方案1】:

编辑

您需要添加空视图,例如:

<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>

【讨论】:

  • 它使按钮不可见,我猜是因为它们没有高度......如果我用 ImageViews 替换按钮,我的代码就可以工作。
  • @jul:他可能错过了它是水平布局的事实,试试 width = 0px
  • 我认为@jul 想要将按钮等间距放置,而不是使它们具有相同的宽度..
  • 啊,第一次看错了。现在我想它会做他想做的事。
【解决方案2】:

使用这些设置,ImageView 的行为类似于Button,但您可能看不到这一点,因为默认情况下,如果图像没有填充视图宽度,它们将居中。它就像一个框架,您会在 HierarchyViewer(一个用于调试布局的 SDK 工具)中看到它。

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

【讨论】:

  • 我使用的另一种解决方案是在按钮之间散布空视图,并仅给出空视图 layout_weights。按钮将保持其宽度,空视图将平均填充剩余空间。您甚至可以尝试同时赋予视图和按钮 layout_weights,只需赋予按钮比空视图更大的权重。这将适应更多的屏幕尺寸和密度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多