根据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>
知道我在这里缺少什么吗?
答案 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"/>