按钮顶部的ImageView

时间:2015-03-26 09:53:49

标签: java android android-layout

我正在尝试将一个小的ImageView放在一个按钮上,但不知怎的,它仍然在它下面。我不明白为什么这种布局与其他视图完美配合。

 <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/background_white_clickable"
                android:text="@string/book_now"
                android:id="@+id/but_book_now"
                 />

            <ImageView
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:id="@+id/img_bookmark"
                android:src="@drawable/ic_action_bookmark_full"
                android:layout_marginRight="15dp"
                android:layout_marginEnd="15dp"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />

        </RelativeLayout>

我尝试使用不同的背景按钮,但只有透明时才能看到图像。我还尝试用彩色视图替换ImageView,仍然无效。

有什么想法吗? THX

编辑:

我得到的答案有些混乱,我的意思是将ImageView放在按钮的Z轴上,而不是y轴。

编辑2:

我不想使用图像按钮,图像只是按钮上的“引脚”,它将出现/消失。 我不想在按钮上使用drawable,我需要将它放在我想要的位置。 使用FrameLayout而不是RelativeLayout不会改变任何东西。 使用imgView.bringToFront()不起作用。

编辑3:

Lollipop之前设备上没有出现此问题。在KitKat上,布局按预期工作。

7 个答案:

答案 0 :(得分:2)

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="80dp" >
<Button
    android:id="@+id/filter"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="7dp"
    android:background="#0000FF"
    android:gravity="center"
    android:paddingBottom="25dp"
    android:paddingTop="25dp"
    android:text="Sort"
    android:textColor="#FFFFFF" />

<ImageView
android:id="@+id/widget_title_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:adjustViewBounds="true"
android:paddingTop="-10dp"
android:scaleType="fitStart"
android:src="@drawable/ic_launcher" />

    </FrameLayout>

尝试一下,虽然我还没有测试过它。

答案 1 :(得分:0)

尝试

findViewById(R.id.img_bookmark).bringToFront();

答案 2 :(得分:0)

您需要在imageview下方设置按钮:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/background_white_clickable"
        android:text="@string/book_now                     
        android:id="@+id/but_book_now"
        android:layout_below="@+id/img_bookmark"/>

    <ImageView
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:id="@+id/img_bookmark"
        android:src="@drawable/ic_action_bookmark_full"
        android:layout_marginRight="15dp"
        android:layout_marginEnd="15dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

修改

我现在注意到你想要一个不在上面的按钮上的图像,所以不要关心上面的代码并使用ImageButton:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <ImageButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/background_white_clickable"
        android:text="@string/book_now                     
        android:id="@+id/but_book_now"
        android:src="@drawable/ic_action_bookmark_full"/>
</RelativeLayout>

答案 3 :(得分:0)

示例代码:

<RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ImageView
            android:id="@+id/img_bookmark"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_launcher" />

        <Button
            android:id="@+id/but_book_now"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/img_bookmark"
            android:text="Test" />
    </RelativeLayout>

注意:

根据您的需要编辑文本和src

答案 4 :(得分:0)

如果您想要带按钮的图像视图:

    <Button
        android:id="@+id/but_book_now"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/ic_launcher"
        android:background="#ff00ff"
        android:text="This is button"
        android:padding="10dp"
        android:textColor="#ffff00" 
        />

</RelativeLayout>

enter image description here

如果您想要没有按钮的图像视图:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/but_book_now"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_launcher"
        android:text="This is button"
        android:padding="10dp"
        android:textColor="#ffff00" 
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ff00ff"
        android:text="This is button"
        android:padding="10dp"
        android:textColor="#ffff00" 
        />

</LinearLayout>

enter image description here

答案 5 :(得分:0)

您可以将RelativeLayout定义为Button并在其上添加ClickEvents,添加带有颜色的子视图或带有PNG的子ImageView,或任何或两者,以在其上放置图像或颜色。

实施例

            <FrameLayout android:id="@+id/buttonTextFillColor"
                android:layout_width="@dimen/mini_icon_width"
                android:layout_height="@dimen/mini_icon_height"
                android:background="@drawable/input_button_background"
                android:clickable="true">
                <View
                    android:id="@+id/colorTextFillColor"
                    android:layout_width="23dp"
                    android:layout_height="23dp"
                    android:background="#FFFFFF"
                    android:layout_gravity="center" />
                <ImageView
                    android:layout_width="23dp"
                    android:layout_height="23dp"
                    android:src="@drawable/button_fill_text"
                    android:layout_gravity="center"/>
            </FrameLayout>

你得到了一个元素联盟:

How will you see it?

答案 6 :(得分:-3)

请为Button属性添加layout_below