0

我同时使用了 RelativeLayout 和 Linearlayout 来实现这一点。(在图像中)!在此处输入图像描述

  1. 使用相对布局,我以固定宽度和 marginLeft 和 marginRight 定位按钮。问题是,如果设备有更大的屏幕,左右边距不会扩大太多,按钮宽度也是固定的。

     <RelativeLayout>
    
        <!-- Row1 -->
    
    <Button1
      alignParentTop = "true" 
      marginLeft = "5dip"
      marginRight="5dip"
     width="80dip"/>
    
    <button2
     alignParentTop ="true"
     center="@id/Button1"
     marginLeft = "5dip"
     marginRight="5dip"
     width="80dip" />
    
    <button2
     alignParentRight="true"
     marginLeft = "5dip"
     marginRight="5dip"
     width="80dip"/>
    
    
    <!-- Row2 -->
    
    <Button3
      below="button1"
      marginLeft = "5dip"
      marginRight="5dip"
     width="80dip"/>
    
    <Button4
      below="button2"
      marginLeft = "5dip"
      marginRight="5dip"
     width="80dip"/>
    
        </RelativeLayout>
    
  2. 使用 RelativeLayout 父级,创建了 2 个带有按钮的水平线性布局。现在按钮的宽度为 0dip,重量为 1。但是,我无法创建第二行。

<RelativeLayout> <linearLayout orientation="horizontal"> <!-- Row1 --> <Button1 width="0dip" weight="1"/> <button2 width="0dip" weight="1"/> <button2 width="0dip" weight="1"/> </linearLayout> <!--Row2--> <linearLayout orientation="horizontal"> Couldn't using this approach </linearLayout> </RelativeLayout>
4

4 回答 4

2

您当然可以像其他人建议的那样使用TableLayoutGridLayout,但如果您想修改您的 LinearLayout 解决方案,只需稍作改动即可实现。像这样的东西:

<LinearLayout android:orientation="vertical">   
   <!-- Row1 -->
   <LinearLayout android:orientation="horizontal">
     <Button    
     android:layout_width="0dip"
     android:layout_weight="1"/>

    <Button
     android:layout_width="0dip"
     android:layout_weight="1"/>

    <Button
     android:layout_width="0dip"
     android:layout_weight="1"/>
   </LinearLayout>

  <!-- Row2 -->
  <LinearLayout android:orientation="horizontal" android:weightSum="3">    
     <Button    
     android:layout_width="0dip"
     android:layout_weight="1"/>

    <Button
     android:layout_width="0dip"
     android:layout_weight="1"/>
  </LinearLayout>
</LinearLayout>

请注意,第二行weightSum加起来是 3,但每个按钮的权重只有 1。

于 2013-09-19T23:50:00.723 回答
0

如果我理解正确,您希望将按钮拉长以填充屏幕。尝试改用TableLayout。一个例子是here。基本上,您为按钮使用表格行和列,并指定“stretchColumns”以确保您的列(以及按钮)伸展以填充空间。

于 2013-09-19T23:28:03.740 回答
0

正如@prijupaul 所说,您可以使用 Gridlayout,但我会坚持使用 LinearLayout 的简单性。我不知道您为什么将所有内容都包装在 RelativeLayout 中,我认为您可以避免这种情况。

<linearLayout  orientation="vertical">   
   <LinearLayout orientation="horizontal">
     <!-- Row1 -->
     <Button1     
     width="0dip"
     weight="1"/>

    <button2
     width="0dip"
     weight="1"/>

    <button2
     width="0dip"
     weight="1"/>
   </LinearLayout>

  <!-- Row2 -->
  <LinearLayout orientation="horizontal">    
     <Button1     
     width="0dip"
     weight="1"/>

    <button2
     width="0dip"
     weight="2"/>
</LinearLayout>
于 2013-09-19T23:29:36.730 回答
0

我会选择Gridlayout来实现这个功能。更少的代码主要和更好地处理方向变化。

于 2013-09-19T23:25:22.727 回答