为什么这些按钮没有按重量调整大小?

时间:2014-02-28 18:49:19

标签: android android-layout

我认为我遇到了layout_weight的问题。我正在尝试将第四个按钮设置为其他按钮的两倍,但我得到以下内容:

enter image description here

我的布局如下:

<?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:weightSum="1.0">

    <!--android:background="@drawable/button_image"-->

    <Button android:id="@+id/button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.2" />

    <Button android:id="@+id/button02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.2" />

    <Button android:id="@+id/button03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.2" />

    <Button android:id="@+id/button04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.4" />

</LinearLayout>

重量是否应该给出我想要的东西?

3 个答案:

答案 0 :(得分:2)

如果您想强制比例作为分数,请使按钮的layout_width = 0,并且包含它们的布局的weightSum等于它们的权重之和,而最后一步是没有必要的,如果有没有指定其权重的子视图,则将使用它来从剩余部分计算它。

请注意,如果您未将它们设置为0,则宽度将是wrap_contentweight得到的宽度的乘积,给出不精确的比例。

<小时/> 布局:     

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:layout_weight="1"
        android:text="1" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/button2"
        android:layout_weight="1"
        android:text="1" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:layout_weight="1"
        android:text="1" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/button4"
        android:layout_weight="2"
        android:text="2" />
</LinearLayout>

结果:

enter image description here

答案 1 :(得分:0)

layout_width设置为0.我假设这是一个水平方向的LinearLayout

答案 2 :(得分:0)

layout_weight以这种方式工作:

  1. 查询项目的初始大小
  2. 可用尺寸根据初始尺寸划分
  3. 如果有剩余空间,则根据重量进行划分。
  4. 在你的情况下,wrap_content给出的初始大小不会为第3步留下任何空间。使用layout_width的0dp,如android推荐的那样,导致所有元素只被给予空格根据他们的体重,不论其内在大小。