无法使视图覆盖 FrameLayout 中的另一个视图

jam*_*mes 6 android android-view android-relativelayout android-framelayout

我想在我的 Button 之上制作我的 ImageView ,但无论我选择哪种布局或我安排布局的方式,该按钮将始终覆盖 ImageView ......这是我尝试过的 FrameLayout 示例:

编辑:只是为了简化我的问题:为什么 FrameLayout 不能正常工作?(您可以将此代码复制到您的 Android Studio 中查看自己)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:padding="0.1dp">

    <Button
        android:clickable="false"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text="135"
        android:background="@android:color/holo_blue_bright"
        android:layout_gravity="center"
        android:id="@+id/buttonText"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/triangle"
        android:id="@+id/triangle"
        android:paddingTop="5dp"
        android:layout_gravity="center_horizontal|bottom" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

Inf*_*age 6

我遇到了同样的问题(注意,如果按钮被禁用,它不会覆盖所有其他视图),并找到了一个修复程序。只需将按钮和图像包装在单独的子框架布局中。

<FrameLayout>...
    <FrameLayout>...
        <Button ... />
    </FrameLayout>
    <FrameLayout>...
        <ImageView ... />
    </FrameLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我不知道这是否有任何负面影响,除了可能有点低效,但它似乎工作正常。


Kho*_* Vo 5

在 Android 5.0 (API 21) 及更高版本中,您必须将android:elevation添加到视图中。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:padding="0.1dp">

    <Button
        android:clickable="false"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text="135"
        android:background="@android:color/holo_blue_bright"
        android:layout_gravity="center"
        android:id="@+id/buttonText"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/triangle"
        android:id="@+id/triangle"
        android:paddingTop="5dp"
        android:layout_gravity="center_horizontal|bottom"
        android:elevation="3dp" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)


jam*_*mes -1

我通过将Button更改为TextView自己解决了问题。FrameLayout 默认行为在这里不起作用,因为 Android 系统总是将按钮设置为覆盖其他视图(因此用户始终能够单击该按钮)。