0

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

我正在使用相对布局来显示应用程序。

<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

4 回答 4

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>

请注意,此方法会在一定程度上降低性能。

于 2013-09-11T07:28:25.667 回答
0

在最后一个 ImageButton 你没有:

android:layout_toRightOf="@+id/Button3"

如果您希望它位于底部,您将需要它。

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

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

这仅适用于FrameLayoutor LinearLayout

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

android:layout_alignParentBottom="true"
于 2013-09-11T07:52:28.967 回答
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" 

然后将该 LinearLayout 包含在您的 RelativeLayout 中。

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

android:layout_width="wrap_content"

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

附带说明一下,我希望您不要尝试制作 iOS 风格的下部标签栏,这在 Android 中是不受欢迎的,更多信息在这里...

祝你有个好的一天 !

于 2013-09-11T07:40:30.267 回答
0

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

我通常这样做的其他方法是:

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

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

于 2013-09-11T08:00:25.037 回答