【问题标题】:Linear Layout space and weight sum线性布局空间和权重总和
【发布时间】:2014-04-11 20:00:55
【问题描述】:

我是 android 新手,我正在尝试制作一个小型计算器作为概念证明。我面临的问题是;无论我想做什么,我总是在底部得到空白空间......将我的按钮设置为 fill_parent ,更改布局权重。我被卡住了,我想得到一些帮助来解决这个问题。也许我缺少一些东西

这是我的布局:

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android">
    <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#635c59">
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#635c59"
            android:layout_margin="0dip"
            android:padding="0dip"
            android:textSize="31dip"
            android:text="3456+8388388"
            android:textColor="#FFF"/>
    </FrameLayout>
    <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="3">
        <LinearLayout
            android:layout_width="fill_parent"
            android:orientation="horizontal"
            android:layout_height="wrap_content">
            <Button
                    android:id="@+id/button_mc"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="MC"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_mr"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="MR"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_ms"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="MS"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_mplus"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="M+"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_mminus"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#8000ff"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="M-"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
        </LinearLayout>
        <LinearLayout
                android:layout_width="fill_parent"
                android:orientation="horizontal"
                android:layout_height="wrap_content">
            <Button
                    android:id="@+id/button_del"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="<--"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_ce"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="CE"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_c"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="C"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_negate"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#0099ce"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="+/-"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
            <Button
                    android:id="@+id/button_sqrt"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="#8000ff"
                    android:layout_margin="0dip"
                    android:padding="0dip"
                    android:text="Sqrt"
                    android:layout_weight="1"
                    android:textSize="28dip"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

在上面的代码中我去掉了一些部分,因为它是重复的,改变的是按钮 id 和颜色。

如您所见,有一个空白空间,我希望我的按钮填充大厅线性布局。 谢谢你的帮助

【问题讨论】:

    标签: android android-layout android-linearlayout screen-size android-layout-weight


    【解决方案1】:

    layout_weight 在您将layout_widthlayout_height 设置为0dp 时效果很好。在您的情况下,将其更改为以下内容:

    android:layout_width="0dp"
    android:layout_height="0dp"
    

    【讨论】:

      【解决方案2】:

      如果你想让你的上层LinearLayout(以“#635c59”为背景的那个)展开,那么你可以用它做以下事情:

      • 移除 layout_weight
      • 用填充父级替换高度
      • 用android:layout_gravity="end"替换下LinearLayout(FrameLayout正下方)的layout_weight

      这会将下部布局放置在底部,并将上部布局扩展到空间的其余部分,因此背景为灰色。

      如果您希望按钮展开从而填充整个下部,则可以将持有按钮的 ListView 的高度替换为 android:layout_weight="1"。将按钮的高度设置为 fill_parent 将导致它们填充视图的底部。

      【讨论】:

        【解决方案3】:
        // try this way hope this help you 
        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:background="#635c59">
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="#635c59"
                    android:textSize="31dip"
                    android:text="3456+8388388"
                    android:textColor="#FFF"/>
            </FrameLayout>
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:orientation="horizontal"
                    android:layout_height="wrap_content">
                    <Button
                        android:id="@+id/button_mc"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="MC"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_mr"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="MR"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_ms"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="MS"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_mplus"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="M+"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_mminus"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#8000ff"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="M-"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:orientation="horizontal"
                    android:layout_height="wrap_content">
                    <Button
                        android:id="@+id/button_del"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="<--"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_ce"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="CE"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_c"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="C"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_negate"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#0099ce"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="+/-"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                    <Button
                        android:id="@+id/button_sqrt"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:background="#8000ff"
                        android:layout_margin="0dip"
                        android:padding="0dip"
                        android:text="Sqrt"
                        android:layout_weight="1"
                        android:textSize="28dip"/>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
        

        【讨论】:

          【解决方案4】:

          大家好,谢谢大家的帮助4的空间和键盘剩下的即3/4的空间,所以我创建了两个线性布局,宽度设置为fill_parent,高度设置为0dip,textView的线性布局将权重设置为1,键盘设置为线性权重为 3 的布局。在键盘布局内,我为每一行创建了五个其他线性布局,并用我的按钮填充每个布局,给它们一个 width=fill_parent 和一个 height=fill_parent 和 weight=1 我的按钮占据了大厅空间

          这是完整的代码,以防有人想检查它:

          <LinearLayout
                  android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  xmlns:android="http://schemas.android.com/apk/res/android">
              <LinearLayout
                      android:layout_width="fill_parent"
                      android:layout_height="0dip"
                      android:layout_weight="1"
                      android:background="#666666">
                  <TextView
                      android:layout_width="fill_parent"
                      android:layout_height="fill_parent"
                      android:background="#666666"
                      android:layout_margin="0dip"
                      android:padding="0dip"
                      android:textSize="31dip"
                      android:text="3456+8388388"
                      android:textColor="#fe2701"
                      android:gravity="bottom|right"/>
              </LinearLayout>
              <LinearLayout
                      android:orientation="vertical"
                      android:layout_width="fill_parent"
                      android:layout_height="0dip"
                      android:layout_weight="3">
                  <LinearLayout
                      android:layout_width="fill_parent"
                      android:orientation="horizontal"
                      android:layout_height="0dip"
                      android:layout_weight="1">
                      <Button
                              android:id="@+id/button_mc"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="MC"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                      <Button
                              android:id="@+id/button_mr"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="MR"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                      <Button
                              android:id="@+id/button_ms"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="MS"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                      <Button
                              android:id="@+id/button_mplus"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="M+"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                      <Button
                              android:id="@+id/button_mminus"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="M-"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                  </LinearLayout>
                  <LinearLayout
                          android:layout_width="fill_parent"
                          android:orientation="horizontal"
                          android:layout_height="0dip"
                          android:layout_weight="1">
                      <Button
                              android:id="@+id/button_del"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="<--"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_ce"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="CE"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_c"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="C"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_negate"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="+/-"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_sqrt"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="Sqrt"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                  </LinearLayout>
                  <LinearLayout
                          android:layout_width="fill_parent"
                          android:orientation="horizontal"
                          android:layout_height="0dip"
                          android:layout_weight="1">
                      <Button
                              android:id="@+id/button_seven"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="7"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_eight"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="8"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_nine"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="9"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_devide"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="/"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_percent"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="%"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                  </LinearLayout>
                  <LinearLayout
                          android:layout_width="fill_parent"
                          android:orientation="horizontal"
                          android:layout_height="0dip"
                          android:layout_weight="1">
                      <Button
                              android:id="@+id/button_four"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="4"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_five"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="5"
                              android:textSize="28dip"
                              android:layout_weight="1"/>
                      <Button
                              android:id="@+id/button_six"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="6"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_mult"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="*"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_inverse"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="1/X"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                  </LinearLayout>
                  <LinearLayout
                          android:layout_width="fill_parent"
                          android:orientation="horizontal"
                          android:layout_height="0dip"
                          android:layout_weight="1">
                      <Button
                              android:id="@+id/button_one"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="1"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_two"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="2"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_three"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="3"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_mimus"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="-"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_equal"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="="
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                  </LinearLayout>
                  <LinearLayout
                          android:layout_width="fill_parent"
                          android:orientation="horizontal"
                          android:layout_height="0dip"
                          android:layout_weight="1">
                      <Button
                              android:id="@+id/button_zero"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="0"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:layout_gravity="center"/>
                      <Button
                              android:id="@+id/button_decimal"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="."
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_plus"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="+"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_mimus"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#666666"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="*"
                              android:layout_weight="1"
                              android:textSize="28dip"/>
                      <Button
                              android:id="@+id/button_ln"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:background="#363636"
                              android:layout_margin="0dip"
                              android:padding="0dip"
                              android:text="Ln"
                              android:layout_weight="1"
                              android:textSize="28dip"
                              android:textColor="#fe2701"/>
                  </LinearLayout>
              </LinearLayout>
          </LinearLayout>
          

          这是一个屏幕截图:在这个链接上(我没有足够的声誉来上传图片)https://www.dropbox.com/s/gztg5b7ih1f2z6z/layout.png

          【讨论】: