【问题标题】:Buttons in RelativeLayout fill screen widthRelativeLayout 中的按钮填充屏幕宽度
【发布时间】:2015-01-09 16:44:09
【问题描述】:

正如您在上面看到的,RelativeLayout 中有四行 Buttons。如何让Buttons 均匀覆盖屏幕宽度?

我尝试了各种各样的方法,但没有任何效果:我尝试将 RelativeLayout 宽度设置为 match_parent 并制作所有 Button's layout_width = fill_parent 以及各种类似的东西。

有什么想法吗?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Game" >

<RelativeLayout 
    android:id = "@+id/rl"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    >

<Button
    android:id="@+id/button0"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

<Button
    android:id="@+id/button1"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_toRightOf="@+id/button0"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

<Button
    android:id="@+id/button2"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_toRightOf="@+id/button1"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

<Button
    android:id="@+id/button3"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_toRightOf="@+id/button2"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

...
...
...

<Button
    android:id="@+id/button12"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_below="@+id/button8"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

<Button
    android:id="@+id/button13"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_below="@+id/button9"
    android:layout_toRightOf="@+id/button12"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

<Button
    android:id="@+id/button14"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_below="@+id/button10"
    android:layout_toRightOf="@+id/button13"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>

<Button
    android:id="@+id/button15"
    android:layout_width="@dimen/size"
    android:layout_height="@dimen/size"
    android:layout_below="@+id/button11"
    android:layout_toRightOf="@+id/button14"
    android:background="@drawable/button"
    android:onClick="ButtonOnClick" 
    android:tag="0"/>


    </RelativeLayout>
</RelativeLayout>

【问题讨论】:

    标签: android button width android-relativelayout


    【解决方案1】:

    最好的方法是有四个垂直线性布局,每个布局都在水平线性布局中包含它们的按钮。确保所有按钮的宽度都是fill_parent

    然后将 weight 属性设置为每个设置的 LinearLayouts width = match_parent 并将 Buttons layout_weight = "1"设置为 LinearLayouts width = match_parent 并将 Buttons layout_weight = "1" 设置为 1,如下所示:

    android:layout_weight = "1"

    确保线性布局宽度也设置为match_parent

    基本上,这会将权重相加并将屏幕宽度划分为按钮之间。

    您的问题的解决方案是权重。

    希望这会有所帮助。快乐编码:)

    附:如果这回答了您的问题,请将其标记为正确答案

    【讨论】:

    • 我做了类似的事情,但布局不正确。我有一个垂直的线性布局,里面有 4 个水平的线性布局。我使每个水平 LinearLayout layout_weight="1" 都设置为 fill_parent。但是每一行的第一个按钮占据了整个屏幕。您确定我应该将布局权重设置为 1 还是将按钮权重设置为 1?
    • 我修好了。基本上制作了 LinearLayouts width = match_parent 并设置 Buttons layout_weight = "1" ---不是 linearLayouts!因此,如果您编辑帖子,我会将您的帖子标记为正确答案。再次感谢您的帮助:)
    • 我一上电脑就会编辑它
    【解决方案2】:

    您可以获取屏幕尺寸并使用它们来决定按钮大小

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    

    然后使用这些尺寸来确定按钮的尺寸(每个尺寸都是宽度除以 4)

    摆弄这个应该会让你到达你想要的地方

    【讨论】:

      【解决方案3】:

      为什么不连续使用LinearLayoutweight 属性?可能是这样的:

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          tools:context=".Game" >
      
      <RelativeLayout 
          android:id = "@+id/rl"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_marginTop="20dp"
          >
      
      <LinearLayout
          android:id="@+id/ll_row_1"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal">
      
      <Button
          android:id="@+id/button0"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:layout_weight="1"
          android:tag="0"/>
      
      <Button
          android:id="@+id/button1"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:layout_weight="1"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:tag="0"/>
      
      <Button
          android:id="@+id/button2"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:layout_weight="1"
          android:tag="0"/>
      
      <Button
          android:id="@+id/button3"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:layout_weight="1"
          android:tag="0"/>
      
      </LinearLayout>
      
      ...
      ...
      ...
      
      <LinearLayout
          android:id="@+id/ll_row_4"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
          android:layout_below="@+id/ll_row_3">
      
      <Button
          android:id="@+id/button12"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:background="@drawable/button"
          android:layout_weight="1"
          android:onClick="ButtonOnClick" 
          android:tag="0"/>
      
      <Button
          android:id="@+id/button13"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:layout_weight="1"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:tag="0"/>
      
      <Button
          android:id="@+id/button14"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:layout_weight="1"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:tag="0"/>
      
      <Button
          android:id="@+id/button15"
          android:layout_width="@dimen/size"
          android:layout_height="@dimen/size"
          android:layout_weight="1"
          android:background="@drawable/button"
          android:onClick="ButtonOnClick" 
          android:tag="0"/>
      </LinearLayout>
      
          </RelativeLayout>
      </RelativeLayout>
      

      如果不行,尝试将按钮的android:layout_width属性设置为0dp

      【讨论】: