layout_weight没有正确调整大小

时间:2014-11-01 00:15:35

标签: java android android-layout-weight

我正在尝试制作计算器应用。我有一个垂直方向的外linearlayout,然后有嵌套的线性布局,这些布局在我的按钮所在的位置具有水平方向。只有最后一个嵌套的线性布局没有正确调整按钮的宽度,因为我希望'0'按钮取宽度的一半和'。'和'='按钮占宽度的四分之一。我给'='按钮布局权重为0.5和'。' &安培; '='按钮的布局权重为0.25,但仍然无法正常工作。

以下是图形布局的屏幕截图:

enter image description here

XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" 
android:background="#000000"
android:weightSum="1">

<TextView 
    android:text="0"
    android:layout_width="wrap_content"
    android:layout_weight = "0.25"
    android:layout_height="0dp"
    android:textSize="40sp"
    android:layout_gravity="right"
    android:textColor="#FFFFFF"
    android:id="@+id/tvDisplay"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp" 
    android:orientation="horizontal"
    android:layout_weight="0.15"
    android:weightSum="1">

   <Button
       android:id="@+id/bClear"
       android:layout_width="wrap_content"
       android:layout_height="fill_parent"
       android:layout_margin="0.2dp"
       android:layout_weight="0.25"
       android:background="#FFFFFF"
       android:text="C"
       android:textSize="30sp" />

    <Button
        android:id="@+id/bChangeSign"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_margin="0.2dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="+/-"
        android:textSize="30sp" />

     <Button
         android:id="@+id/bPercent"
         android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
         android:background="#FFFFFF"
         android:text="%"
         android:textSize="30sp" />

     <Button
         android:id="@+id/bDivide"
         android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
         android:background="#FF9900"
         android:text="/"
         android:textSize="30sp" />

</LinearLayout>

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp" 
    android:orientation="horizontal"
    android:layout_weight="0.15">

    <Button 
        android:text="7"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_margin="0.2dp"
        android:layout_weight="0.25"
        android:id="@+id/b7"/>

   <Button 
        android:text="8"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_margin="0.2dp"
        android:layout_weight="0.25"
        android:id="@+id/b8"/>

    <Button 
        android:text="9"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_margin="0.2dp"
        android:layout_weight="0.25"
        android:id="@+id/b9"/>

    <Button
        android:id="@+id/bMultiply"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_margin="0.2dp"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:text="x"
        android:textSize="30sp" />

</LinearLayout>

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp" 
    android:orientation="horizontal"
    android:layout_weight="0.15">

   <Button 
        android:text="4"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/b4"/>

    <Button 
        android:text="5"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/b5" />

     <Button 
        android:text="6"
        android:background="#FFFFFF"
        android:textSize="30sp"
       android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/b6" />

     <Button 
        android:text="-"
        android:background="#FF9900"
        android:textSize="30sp"
        android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/bSubtract"
        />

</LinearLayout>

      <LinearLayout
   android:layout_width="match_parent"
    android:layout_height="0dp" 
    android:orientation="horizontal"
    android:layout_weight="0.15">

    <Button 
        android:text="1"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/b1" />

   <Button 
        android:text="2"
        android:background="#FFFFFF"
        android:textSize="30sp"
       android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/b2" />

    <Button 
        android:text="3"
        android:background="#FFFFFF"
        android:textSize="30sp"
        android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/b3" />

     <Button 
        android:text="+"
        android:background="#FF9900"
        android:textSize="30sp"
       android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:layout_margin="0.2dp"
         android:layout_weight="0.25"
        android:id="@+id/bPlus" />

</LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.15"
            android:orientation="horizontal" 

            <Button
                android:id="@+id/b0"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_margin="0.2dp"
                android:layout_weight="0.5"
                android:background="#FFFFFF"
                android:text="0"
                android:textSize="30sp" />

            <Button
                android:id="@+id/bDecimal"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_margin="0.2dp"
                android:layout_weight="0.25"
                android:background="#FFFFFF"
                android:text="."
                android:textSize="30sp" />

            <Button
                android:id="@+id/bEquals"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_margin="0.2dp"
                android:layout_weight="0.25"
                android:background="#FF9900"
                android:text="="
                android:textSize="30sp" />
        </LinearLayout>

2 个答案:

答案 0 :(得分:0)

这个问题的解决方案非常简单。

Android很棒,开发它的工具很棒,但是你会遇到这样的行为,你会发现它当然不是完美的。

继续将底部3个按钮中的android:layout_width更改为

android:layout_width="0dp"

现在,这是向我解释的方式。 layout_weight属性尝试平衡宽度以正确的比例,但它会考虑它尝试平衡的按钮的宽度。通过将宽度设置为绝对无(0dp),您可以取消任何可能干扰layout_weigth尝试平衡比率的宽度。基本上,没有其他值可以甩掉宽度的移动。

我希望有所帮助。祝你好运:)

答案 1 :(得分:0)

测试好

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
android:orientation="vertical"
android:weightSum="1" >

<TextView
    android:id="@+id/tvDisplay"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="right"
    android:layout_weight="0.25"
    android:text="0"
    android:textColor="#FFFFFF"
    android:textSize="40sp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Button
        android:id="@+id/bClear"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="C"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bChangeSign"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="+/-"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bPercent"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="%"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bDivide"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:text="/"
        android:textSize="30sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Button
        android:id="@+id/b7"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="7"
        android:textSize="30sp" />

    <Button
        android:id="@+id/b8"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="8"
        android:textSize="30sp" />

    <Button
        android:id="@+id/b9"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="9"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bMultiply"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:text="x"
        android:textSize="30sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Button
        android:id="@+id/b4"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="4"
        android:textSize="30sp" />

    <Button
        android:id="@+id/b5"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="5"
        android:textSize="30sp" />

    <Button
        android:id="@+id/b6"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="6"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bSubtract"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:text="-"
        android:textSize="30sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Button
        android:id="@+id/b1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="1"
        android:textSize="30sp" />

    <Button
        android:id="@+id/b2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="2"
        android:textSize="30sp" />

    <Button
        android:id="@+id/b3"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="3"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bPlus"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:text="+"
        android:textSize="30sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:orientation="horizontal"
    android:weightSum="1" >

    <Button
        android:id="@+id/b0"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.5"
        android:background="#FFFFFF"
        android:text="0"
        android:textSize="30sp" />

    <Button
        android:id="@+id/bDecimal"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FFFFFF"
        android:text="."
        android:textSize="30sp" />

    <Button
        android:id="@+id/bEquals"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="0.1dp"
        android:layout_weight="0.25"
        android:background="#FF9900"
        android:text="="
        android:textSize="30sp" />
</LinearLayout>

enter image description here

相关问题