Appcompat v21工具栏提升前棒棒糖

 三哥是二姐的三哥 发布于 2022-12-13 10:07

首先,我知道之前已经问过这个问题,但之前没有得到回答.我希望有人能给我一个答案.

在我的应用程序中,我使用Appcompat_v7(API 21)中的工具栏.这是我的代码:


这是我使用的ToolBar样式:




问题是,提升前棒棒糖不起作用.所以我的问题是:棒棒糖设备上的工具栏下是否有阴影?

6 个回答
  • 您可以使用FrameLayoutwith 添加阴影(高程)foreground="?android:windowContentOverlay".Lollipop前不支持elevation属性.因此,如果您正在使用FrameLayout像片段容器那么只需添加前景属性.

    2022-12-13 10:09 回答
  • 由于我遇到了CardView小部件方法的问题,我使用了@Sniper提到的FrameLayout方法; 它工作得很好!

    我只是想分享你必须使用的代码片段.只需将其直接放在主要内容开始的工具栏下:

    <FrameLayout
            android:layout_
            android:layout_
            android:foreground="?android:windowContentOverlay">
    

    别忘了关闭:

    </FrameLayout>
    

    2022-12-13 10:09 回答
  • 使用CardView容器工具栏是个坏主意.

    CardView很重,尤其适用于低端设备.

    最好的方法是在工具栏下方放置一个渐变阴影视图.阴影视图必须是协调器布局的直接子视图.即.包含工具栏和阴影视图的appbar必须是兄弟姐妹.

    将此视图组件添加到布局中.

     <View
        android:id="@+id/gradientShadow"
        android:layout_
        android:layout_
        android:background="@drawable/toolbar_shadow"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_collapseMode="pin"/>
    

    可绘制的toolbar_shadow.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <gradient
        android:angle="90"
        android:endColor="#33333333"
        android:startColor="@android:color/transparent"/>
    </shape>
    

    这将解决前棒棒糖设备中的问题.但是我们不希望在棒棒糖和上面的设备中出现这种阴影,因此可以通过棒棒糖及以上设备实现可视性.

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            findViewById(R.id.gradientShadow).setVisibility(View.GONE);
    }
    

    完成.

    2022-12-13 10:09 回答
  • 我正在使用这个答案:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    android:orientation="vertical">
    
    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/toolbar"
        android:layout_
        android:layout_
        android:background="@color/orange"
        android:titleTextAppearance="@color/White"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
    
        <View
            android:layout_
            android:layout_
            android:background="@drawable/toolbar_shadow" />
    </LinearLayout>
    

    toolbar_shadow.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient
            android:startColor="#3f3f3f"
            android:endColor="@android:color/transparent"
            android:angle="270" />
    </shape>
    

    2022-12-13 10:09 回答
  • 它可以有真实的阴影 - 动画和生成.Lollipop使用的方法自Froyo开始提供.我认为Honeycomb用于阴影生成的硬件加速可用.以下是它的工作原理:

    将您的视图绘制到一个离线位图,并将LightingColorFilter设置为0,0

    使用ScriptIntrinsicBlur类和高程值作为半径来模糊黑色形状(屏幕外位图)

    在视图下方绘制位图

    它需要添加自定义高程属性,能够渲染阴影的自定义视图,以及使用渲染脚本和兼容性库(对于旧设备).我不打算深入研究细节,因为其中很多都包括编译和次要性能优化问题.但这是可能的.

    为什么官方支持库中没有阴影?

    它需要在UI框架中进行更改,因为无法自由绘制外部视图边界

    平滑动画需要相当不错的GPU

    看到:

    https://www.youtube.com/watch?v=jbU4SXblO5s

    https://androidreclib.wordpress.com/2014/11/25/lollipops-shadows-on-gingerbread/

    https://github.com/ZieIony/Carbon

    2022-12-13 10:09 回答
  • 这对我非常有用:

    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_
        android:layout_
        android:background="@color/primary"
        card_view:cardElevation="4dp"
        card_view:cardCornerRadius="0dp">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:background="@color/primary"
            android:min />
    
    </android.support.v7.widget.CardView>
    

    2022-12-13 10:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有