Java Android:将imageButton放置在按钮上

Java Android:将imageButton放置在按钮上,java,android,android-layout,button,imagebutton,Java,Android,Android Layout,Button,Imagebutton,我想在占据屏幕1/3的大按钮上放置两个小图标(带动作)。当我们点击这两个图标和按钮时,它们必须支持操作。我很确定我必须使用imageButton作为图标。但是,我找不到任何方法将图标(imageButton)保持在按钮顶部 这是我的密码: <RelativeLayout android:layout_width="match_parent" android:layout_weight="1" android:layout_height="0dp">

我想在占据屏幕1/3的大按钮上放置两个小图标(带动作)。当我们点击这两个图标和按钮时,它们必须支持操作。我很确定我必须使用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”允许我在聚焦或按下按钮时为按钮添加一种颜色和另一种颜色

我尝试了很多不同的方法,但是我没有找到一个简单的解决方法。图标仍然隐藏在大按钮后面


谢谢你的帮助

更改布局中的顺序如何?将按钮部件放在顶部,然后声明2个图标



您应该为2
imageButton
添加android:translationZ=“5dip”。它可以工作(您应该运行并查看,它在IDE上并没有这样显示)

您可以使用
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>

这是对布局稍加修改的版本,效果很好

我用普通的安卓和标准按钮替换了所有的自定义按钮,并在布局中将大按钮向上移动,因为如果它位于底部,它的z索引更高,并覆盖了两个小按钮


我终于找到了一种方法。 解决方案是将
相对视图
用作按钮,并用简单的
文本视图
替换
按钮

<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>


我希望这有帮助!:)

我很确定我必须使用imageButton来显示图标
您也可以使用ImageView或TextView。在RelativeLayout中找到正确的方法来排列视图。我可以使用ImageView作为图标吗?他们仍然可以使用android:onClick=“action2”?那会有用吗?当然。我经常像使用按钮一样使用ImageView或TextView。只需添加android:clickable=“true”属性。但是提升没有问题吗?还是我的背景属性?非常感谢。我要试试这个,如果它有效,我会发布答案:)你应该为2 imageButton添加android:translationZ=“5dip”。它可以工作(您应该运行并查看,它在IDE上没有显示)是的,但是
android:translationZ
只能从API 21工作,我需要一个更低的…:(不过非常感谢你。
<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>