在布局底部创建4个ImageButtons

时间:2013-09-11 07:19:16

标签: android android-layout relativelayout

我正在尝试在布局底部显示4个ImageButtons。我只能得到3个ImageButtons。第四个ImageButton不可见。这是我的代码。

我使用Relative Layout来显示应用程序。

<ImageButton
    android:id="@+id/Button1"
    android:layout_weight="1.0"
    android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
    android:longClickable="true"
    android:layout_width="wrap_content"
    android:layout_height="75sp"
    android:background="@android:color/transparent"
    android:src="@drawable/imagebutton2"/>

 <ImageButton
    android:id="@+id/Button2"
    android:layout_gravity="bottom"
    android:layout_toRightOf="@+id/Button1"
    android:layout_width="wrap_content"
    android:layout_height="75sp"
    android:background="@android:color/transparent"
    android:src="@drawable/imagebutton1"
    android:layout_weight="1.0"
    android:layout_marginLeft="2dp"
    android:longClickable="true"/>

 <ImageButton
     android:id="@+id/Button3"
     android:layout_gravity="bottom" 
     android:layout_toRightOf="@+id/Button2"
     android:layout_height="75sp"
     android:layout_width="wrap_content"
     android:layout_weight="1.0"
     android:background="@android:color/transparent"
     android:src="@drawable/imagebutton1"
     android:layout_marginLeft="2dp"
     android:longClickable="true"/>
 <ImageButton
     android:id="@+id/Button4"
     android:layout_gravity="bottom" 
     android:layout_height="75sp"
     android:layout_width="wrap_content"
     android:layout_weight="1.0"
     android:background="@android:color/transparent"
     android:src="@drawable/imagebutton1"
     android:layout_marginLeft="2dp"
     android:longClickable="true"
     android:layout_alignParentRight="true"/>

4 个答案:

答案 0 :(得分:1)

将其放入带有权重的LinearLayout中,并将此LinearLayout与父母的底部对齐,如下所示:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true" >

    <ImageButton
        android:id="@+id/ib1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/ib2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/ib3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/ib4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

</LinearLayout>

请注意,此方法会稍微降低性能。

答案 1 :(得分:0)

如果您想继续使用RelativeLayout作为父布局,首先需要从ImageButton属性中删除它:

android:layout_weight="1.0"

它在LinearLayout中使用,Lint应该给你一个警告(RelativeLayout中的布局参数无效)。

如果您希望4个按钮显示在屏幕底部,则需要包含

android:layout_alignParentBottom="true" 

在所有4个ImageButtons中,我尝试了你提供的xml,只有第一个按钮显示在底部。

最后但并非最不重要的是,如果你希望你的按钮具有相同的尺寸以具有一定的设计一致性,我建议将它们放在水平的LinearLayout中

android:layout_alignParentBottom="true"
android:layout_width="fill_parent"

并使用

配置ImageButtons
android:layout_width="0dp"
android:layout_weight="1.0" 

然后在RelativeLayout中包含LinearLayout。

另一件事:因为你正在使用

android:layout_width="wrap_content"

对于你的ImageButtons,你需要确保图像不是太宽,否则你的某些按钮可能不会显示在屏幕上,因为第一个按钮占用太多空间,留下最后一个(s)在屏幕右侧。

另一方面,我希望你不要试图制作iOS风格的低标签栏,这在Android中是不受欢迎的,更多信息here ......

有一个好的!

答案 2 :(得分:0)

在最后一张ImageButton中你还没有:

android:layout_toRightOf="@+id/Button3"

如果你想让它在底部,你将需要这个。

我还建议你删除一些代码:

android:layout_gravity="bottom" 
android:layout_weight="1.0"

这仅适用于FrameLayoutLinearLayout

如果您想确定每个ImageButton位于屏幕底部,请使用您用于第一个按钮的内容:

android:layout_alignParentBottom="true"

答案 3 :(得分:0)

就像有些人说的那样,在最后一个按钮中,你没有android:layout_toRightOf = "@id/Button3"所以它将位于布局的顶部。

我通常做的其他方式是:

android:layout_toRightOf = "@id/Button1"
android:layout_alignbottom = @id/Button1"

它将与button1的底部对齐。我这样做是因为有时这个按钮与另一个按钮不对齐,取决于布局。