我正在开发一个使用 CoordinatorLayout/AppBarLayout 组合的 UI,正如在大多数示例中通常看到的那样,但我有这个要求:我想始终用 View 覆盖 AppBarLayout。因此,无论发生什么滚动行为,都应该在此 View 下发生。目前,这就是我所看到的:

android - 将 View 放在 AppBarLayout 之上-LMLPHP

在这里,你看到的蓝色条是我最想要的。正如你所看到的,它最初是隐藏的,只有当我们将 AppBarLayout 滚动到屏幕外时才会暴露出来。供您引用,这里是此布局的代码,其 id 为 android:id="@+id/linearLayout" :

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.snapsboardmainpage.MainActivity"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            app:layout_scrollFlags="scroll|snap"
            android:orientation="vertical">

        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="112dp"
            android:orientation="vertical"
            app:layout_scrollFlags="scroll|snap"
            android:background="@android:color/holo_green_light">

        </LinearLayout>

        <android.support.design.widget.TabLayout
            android:id="@+id/id_tab_photosvideos_albums"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|snap">

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </android.support.design.widget.TabLayout>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/nested_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v4.view.ViewPager
            android:id="@+id/id_viewpager_photosvideos_albums"
            android:layout_width="match_parent"
            android:layout_height="match_parent">


        </android.support.v4.view.ViewPager>

    </android.support.v4.widget.NestedScrollView>

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:orientation="vertical"
        android:layout_gravity="top"
        app:layout_behavior="com.example.snapsboardmainpage.TopActionBarBehavior"
        android:background="@android:color/holo_blue_light">

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:orientation="vertical"
        android:layout_gravity="bottom"
        android:background="@android:color/holo_orange_light">

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

我怎样才能实现这种覆盖行为?(如果这个蓝色条可以保留为 CoordinatorLayout 的直接子代,那就更好了)

最佳答案

虽然这个问题看起来很困难,但答案却出奇的简单:

android:elevation="8dp"

是的,就是这样。只需将它设置在必须覆盖 AppBarLayout 的 View 上。

关于android - 将 View 放在 AppBarLayout 之上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47721461/

10-12 04:15