Android折叠工具栏删除高程和阴影

sch*_*521 3 android android-layout

我正在尝试使折叠的应用栏具有纯色的渐变布局。这应该是可以实现的,app:elevation="0dp"但那没有用。但是,当我在应用程序上运行“即时运行”时,而不是运行完整版本,我得到了预期的结果。让我附上图片:

这是当前外观: 带有阴影的UI,不期望的结果

在此处输入图片说明

这是我运行即时运行时所需的外观/外观: 不带阴影的UI,所需的结果

在此处输入图片说明

这是我的布局文件:

<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"
android:fitsSystemWindows="true"
android:windowActionBar="false"
android:id="@+id/main_background">

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/app_bar_height"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme"
    android:elevation="0dp"
    app:elevation="0dp">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:toolbarId="@+id/toolbar"
        android:elevation="0dp"
        app:elevation="0dp">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin">

        </android.support.v7.widget.Toolbar>

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

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

如果不清楚,我指的是app_bar下面标记为“ Reee”的阴影。在第一张图片中有阴影,在第二张图片中没有阴影。我不想有阴影。但是,我只能在运行即时运行时实现这种外观,然后在下次运行/完全编译时消失。

我仍在寻找解决此问题的方法,但很遗憾我还没有找到任何东西。我尝试过设置stateListAnimator=@null为无济于事的示例。

继续进行进一步的研究,我在此应用栏下方有一个SwipeRefreshLayout和Recyclerview。当我删除RecyclerView时,得到了预期的效果。我的RecyclerView可以做什么,如何解决?

Vla*_*kov 16

刚设置

android:stateListAnimator="@null"
Run Code Online (Sandbox Code Playgroud)

或者

app:elevation="0dp"
Run Code Online (Sandbox Code Playgroud)

注意:你应该使用app:命名空间而不是android:

到你的 AppBarLayout

  • app:elevation="0dp" 到 AppBarLayout 有效。谢谢 (3认同)

Vip*_*sri 6

您可以通过设置一个自定义来做到这一点stateListAnimator

创建一个新的动画“appbar_not_elevated.xml” animatorres

<item app:state_collapsible="true" app:state_collapsed="true">
    <objectAnimator android:propertyName="elevation"
                    android:valueTo="0"
                    android:valueType="floatType"
                    android:duration="1"/>
</item>

<item>
    <objectAnimator android:propertyName="elevation"
                    android:valueTo="0"
                    android:valueType="floatType"
                    android:duration="1"/>
</item>
Run Code Online (Sandbox Code Playgroud)

这会将折叠状态和展开状态的海拔高度设为零。

然后将设置stateListAnimatorAppBarLayout

android:stateListAnimator="@animator/appbar_not_elevated"
Run Code Online (Sandbox Code Playgroud)


sch*_*521 1

我最初忽略了提供问题中 AppBar 下的 RecyclerView,认为问题仅仅是 AppBarLayout。但我已经解决了这个问题。我的 RecyclerView 看起来像这样:

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swipeRefreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="0dp"
    android:background="@drawable/gradient_blue_4"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/transactions"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:clipToPadding="false"
        android:fadeScrollbars="true"
        android:overScrollMode="always"
        android:paddingBottom="48dp"
        android:scrollbars="none"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:background="?selectableItemBackground" />

</android.support.v4.widget.SwipeRefreshLayout>
Run Code Online (Sandbox Code Playgroud)

在我的下面AppBarLayout。不完全确定为什么这可以解决问题,但删除?selectableItemBackgroundRecyclerView 的背景可以解决问题并给我留下所需的结果。

感谢所有提供的答案,我最初更加感兴趣,因为我通过运行即时运行获得了我想要的结果。不幸的是,这种见解没有提供额外的帮助。