如何分层视图

时间:2010-04-13 13:37:08

标签: android

我有一个扩展View类的自定义视图。我希望我的自定义视图的2个实例直接在彼此之上分层。我的布局文件应如何实现这一目标?

3 个答案:

答案 0 :(得分:29)

原来FrameLayout就是我想要的。只需在您的布局中执行此操作:

    <FrameLayout  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >

        <com.proj.MyView
            android:id="@+id/board1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

        <com.proj.MyView
            android:id="@+id/board2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

    </FrameLayout>

答案 1 :(得分:24)

使用RelativeLayoutRelativeLayout的后期孩子将与之前的孩子重叠。

答案 2 :(得分:5)

虽然您可以使用RelativeLayoutFrameLayout实现分层,但在API 21及更高版本中......事情已发生变化。

在API 21及更高版本中,xml的后期子代并不意味着它会与早期的子代重叠。相反,它使用Elevation来确定哪个视图将与其他视图重叠(Z-Index)。

例如,如果你有类似的东西。

<FrameLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        android:text="Hello World"
        android:layout_gravity="top" />

    <View
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:background="@android:color/black"
        android:layout_gravity="bottom" />

</FrameLayout>

View即使在Button之后添加,也不会显示Button。这是因为View的海拔高于elevation。要重新排列Z-Index,您可以将<FrameLayout android:layout_height="match_parent" android:layout_width="match_parent"> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:text="Hello World" android:layout_gravity="top" android:elevation="0dp" /> <View android:layout_width="match_parent" android:layout_height="10dp" android:background="@android:color/black" android:layout_gravity="bottom" android:elevation="2dp" /> </FrameLayout> 属性添加到相应的视图中。

View

这样Button将与gem 'foundation-rails', '~> 6.2.4' 重叠。

更多信息 海拔高度阴影:https://material.io/guidelines/material-design/elevation-shadows.html