当前位置: 首页 > 知识库问答 >
问题:

Appcompat v21工具栏提升预Lollipop

卫宁
2023-03-14

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

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

<android.support.v7.widget.Toolbar
    style="@style/DarkActionbarStyle"
    android:id="@+id/toolBar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/actionbar_height" />

这是我使用的工具栏样式:

<style name="DarkActionbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    <item name="android:background">?attr/colorPrimary</item>
    <item name="titleTextAppearance">@style/ActionBarTitle</item>
    <item name="android:elevation">2dp</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="theme">@style/ThemeActionBarDark</item>
</style>

<style name="ThemeActionBarDark" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="actionBarItemBackground">@drawable/btn_dark_orange</item>
    <item name="selectableItemBackground">@drawable/btn_dark_orange</item>
</style>

问题是,海拔在Lollipop之前不起作用。所以我的问题是:有可能在Lollipop前设备的工具栏下有阴影吗?

共有3个答案

逑衡
2023-03-14

您可以使用FrameLayoutforeground=“?android:windowContentOverlay”向后添加阴影(立面)。Lollipop前不支持标高属性。所以,如果您像片段容器一样使用FrameLayout,只需向其添加前景属性即可。

孙震博
2023-03-14

将CardView容器用于工具栏是个坏主意。

CardView很重,尤其是对于低端设备。

最好的方法是在工具栏下方放置渐变阴影视图。阴影视图必须是协调器布局的直接子级。即,包含工具栏和阴影视图的appbar必须是同级的。

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

 <View
    android:id="@+id/gradientShadow"
    android:layout_width="match_parent"
    android:layout_height="5dp"
    android:background="@drawable/toolbar_shadow"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_collapseMode="pin"/>

可绘制工具栏的阴影。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>

这将解决预Lollipop设备中的问题。但我们不希望在Lollipop及以上的设备中出现这种阴影,所以请查看带有Lollipop及以上的设备。

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

完成。

吕征
2023-03-14

这对我非常有效:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/primary"
    card_view:cardElevation="4dp"
    card_view:cardCornerRadius="0dp">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/primary"
        android:minHeight="?attr/actionBarSize" />

</android.support.v7.widget.CardView>
 类似资料:
  • 我知道我做错了什么。但我找不到这里有什么问题。请帮助我正确理解这一点。

  • 问题内容: 我基于Tkinter创建了一个应用程序,该应用程序使用Matplotlib绘制波形。我不知道如何更改Matplotlib工具栏按钮的工具提示(由于我的应用程序是捷克语,因此我需要翻译英文说明)。我还想更改/翻译或仅删除单击缩放或平移按钮时出现在工具栏面板旁边的说明(,)。 我发现了一些有关如何从工具栏添加或删除按钮的有用提示,但是没有找到有关自定义工具提示/描述的任何建议。我认为这与前

  • 底部导航,有图标和文字,响应鼠标事件和当前页面导航 <nav class="bar bar-tab">   <a class="tab-item external active" href="#">     <span class="icon icon-home"></span>     <span class="tab-label">文案</span>   </a>   <a clas

  • 工具栏是位于屏幕底端的固定(在固定和穿透布局类型中)区域,它包含导航元素。 工具栏不包含任何其他部分,内部只含有普通文本。 工具栏布局 工具栏布局非常简单: <div class="toolbar"> <div class="toolbar-inner"> <a href="#" class="link">Link 1</a> <a href="#" cla

  • 工具栏综述 Toolbar basics 在Jquery Mobile中,有两种标准的工具栏:头部栏和尾部栏 头部栏的作用为网站的标题,通常是移动网站页面的第一个元素,一般包括页面的标题文字和最多两个按钮 尾部栏通常是移动网站页面的最后一个元素,在内容和作用上比头部栏更自由一些,但一般也要包含文字和按钮 在头部栏或尾部栏里放置一个水平的导航栏或选项卡栏的做法是很普遍的,所以Jquery Mobil

  • 工具栏在此是指在移动网站和应用中的头部,尾部和内容中的工具条。所以Jquery Mobile提供了一套标准的工具和导航栏的工具,可以在绝大多数情况下直接使用