FrameLayout中的重叠行为不正确

时间:2015-10-08 13:48:50

标签: android android-layout

根据docs,FrameLayout中的子视图相互叠加,最近添加的视图位于顶部。我注意到,这似乎在Lollipop或更高版本中并不准确。例如,在以下xml中,按钮仍然可见,即使它应该由我的自定义视图覆盖。

值得一提的是,虽然我的自定义视图扩展了FrameLayout,但我确实给子视图充气,所以我的FrameLayout不是空的。

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/some_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:text="button"/>

    <mycustomframelayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000"/>

</FrameLayout>

知道我在这里缺少什么吗?

2 个答案:

答案 0 :(得分:10)

Lollipop及更高版本中的按钮具有默认高度,这使得它们始终在顶部绘制。您可以通过覆盖默认StateListAnimator来更改此内容。

尝试将其放入按钮XML:

android:stateListAnimator="@null"

FrameLayout现在应该覆盖按钮。

答案 1 :(得分:2)

尝试将高程设置为FrameCustom:

<mycustomframelayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000"
        android:elevation="100dp"/>