Android:将imageButton放在Button上

时间:2015-09-17 13:10:18

标签: java android android-layout button imagebutton

我想在一个占据屏幕1/3的大按钮上放置2个小图标(带动作)。当我们点击它们时,2个图标和按钮必须支持操作。我很确定我必须使用 imageButton 作为图标。但是我找不到任何方法将图标(imageButton)保留在按钮顶部。

这是我的代码:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:layout_height="0dp">

    <ImageButton
        android:id="@+id/icon1"
        android:src="@drawable/ic1"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:contentDescription="@string/ic1"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:onClick="action1"/>

    <ImageButton
        android:id="@+id/icon2"
        android:src="@drawable/ic2"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"           
        android:contentDescription="@string/ic2"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:onClick="action2"/>

    <com.myapp.CustomViews.myButton
        android:id="@+id/big_button1"
        android:text="@string/text_big_button1"
        android:background="@drawable/changing_button1"
        android:textColor="@color/white"
        android:layout_height="match_parent"
        android:textSize="@dimen/font_size_buttons"
        android:layout_width="match_parent"
        android:gravity="center"
        android:textAllCaps="false"
        android:capitalize="none"
        android:onClick="bigAction1"/>
</RelativeLayout>

大按钮上的“@ drawable / changing_button1”允许我为按钮添加一种颜色,在聚焦或按下时为其添加一种颜色。

我尝试了很多不同的东西,但是当我确定有一个简单的解决方案时,我找不到办法。图标仍隐藏在大按钮后面。

感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

如何更改布局中的顺序?将Button小部件置于顶部,然后在此之后声明2个图标?

您应该为2 public class QueryBuilder_QueryField extends AbstractQueryBuilder<QueryBuilder_QueryField> 添加android:translationZ="5dip"。它可以工作(您应该运行并查看,它在IDE上没有显示)

答案 1 :(得分:0)

您可以使用FrameLayout覆盖视图。例如:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:layout_height="0dp">

    <com.myapp.CustomViews.myButton
        android:layout_gravitiy="center"
        .../>

    <ImageButton
        android:layout_gravitiy="left|center_vertical"
        .../>

    <ImageButton
        android:layout_gravitiy="right|center_vertical"  
        .../>

</FrameLayout>

答案 2 :(得分:0)

以下是您的布局的略微修改版本,工作正常。

我用普通的android和标准按钮替换了所有自定义内容,并在布局中移动了大按钮,因为如果它位于底部,则它具有更高的z-index并覆盖两个小按钮。

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    <Button
        android:id="@+id/big_button1"
        android:text="BIG BUTTON"
        android:background="@android:color/holo_blue_dark"
        android:textColor="@color/white"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:gravity="center"
        android:textAllCaps="false"
        android:capitalize="none"
        android:onClick="bigAction1"/>    

        <Button
            android:id="@+id/icon1"
            android:text="BT1"
            android:background="@android:color/holo_red_dark"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:onClick="action1"/>

        <Button
            android:id="@+id/icon2"
            android:text="BT2"
            android:background="@android:color/holo_green_dark"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:onClick="action2"/>

</RelativeLayout>

答案 3 :(得分:0)

我终于找到了办法。 解决方案是使用RelativeLayout作为按钮,并将Button替换为简单的TextView

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:layout_height="0dp"
    android:background="@drawable/custom_button_changing_color"
    android:clickable="true"
    android:focusable="true"
    android:id="@+id/button_layout"
    android:onClick="bigAction1">

    <TextView
        android:id="@+id/text_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/text"
        android:gravity="center"
        android:layout_centerVertical="true"
        android:textColor="@color/white"
        android:textSize="@dimen/font_size_buttons"
        android:textAllCaps="false"
        android:background="@color/transparent"/>

    <ImageButton
        android:id="@+id/icon1"
        android:src="@drawable/ic1"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"           
        android:contentDescription="@string/ic1"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:onClick="action2"/>

    <ImageButton
        android:id="@+id/icon2"
        android:src="@drawable/ic2"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"           
        android:contentDescription="@string/ic2"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:onClick="action3"/>
</RelativeLayout>

我希望这有帮助! :)