【问题标题】:Remove android.widget.Toolbar shadow移除 android.widget.Toolbar 阴影
【发布时间】:2017-09-01 12:03:57
【问题描述】:

使用 API21+ Toolbar:

// Toolbar
Toolbar toolbar = new Toolbar(this);
toolbar.showOverflowMenu();

想要完全移除它的影子。 setElevation(0) 没有做任何事情,因为 getElevation() 已经返回 0

有Material Design参考:

https://material.io/guidelines/layout/structure.html#structure-toolbars

有开发参考:

https://developer.android.com/reference/android/widget/Toolbar.html

但我没有看到任何与阴影相关的信息。 Toolbar

问题:如何完全移除/隐藏Toolbar阴影?

【问题讨论】:

  • 你在你的 xml 中尝试过app:elevation="0dp" 吗?请注意app:

标签: java android android-styles


【解决方案1】:

在您的工具栏上使用app:elevation="0dp" 而不是android:elevation。 如果它不起作用,请将您的工具栏放在AppBarLayout 内并设置app:elevation="0dp"

<android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:elevation="0dp">
            ...
</android.support.design.widget.AppBarLayout>

【讨论】:

【解决方案2】:

使用app:elevation="0dp" 属性到您的ToolbarAppBarLayout 来移除阴影。

#.如果您只使用Toolbar,则将属性app:elevation="0dp" 添加到Toolbar

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        app:elevation="0dp"/>

#.如果您使用AppBarLayout作为Toolbar的容器,则将属性app:elevation="0dp"添加到AppBarLayout

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay"
        app:elevation="0dp">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

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

输出:

更新:

如果您想以编程方式将其删除,则可以使用以下代码:

getSupportActionBar().setElevation(0);

希望对你有帮助~

【讨论】:

  • 我感觉它受编译的 sdk 版本影响很大...仍在测试你的 sdk 版本 FAT 是什么?因为我正在使用 26.0.1
  • app:elevation="0dp" 工作正常,但 android:elevation="0dp" 不行!
  • 问题是针对 android.widget.Toolbar 而不是针对 android.support.v7.widget.Toolbar!
  • 它完全删除了工具栏,而不是阴影
  • 完美答案!
【解决方案3】:

代替android:elevation试试app:elevation

<android.support.design.widget.AppBarLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"       
    app:elevation="0dp">
</android.support.design.widget.AppBarLayout>

【讨论】:

    【解决方案4】:

    我自己找到了解决方案:

    getActionBar().setElevation(0);
    

    更多信息:

    https://developer.android.com/reference/android/app/Activity.html#getActionBar()

    【讨论】:

      【解决方案5】:

      如果您在工具栏中使用 AppBarLayout,您可以使用: app:elevation="0dp" 代替 android:elevation 在 AppBarLayout 中

      【讨论】:

        【解决方案6】:
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          appBarLayout.outlineProvider = null
        }
        

        【讨论】:

          【解决方案7】:
          findViewById(R.id.appBarLayout).bringToFront();
          

          我认为为我工作的版本问题谢谢Bjorn

          this question

          【讨论】:

            【解决方案8】:

            将此代码放入要隐藏ToolBarFragment 中。

            @Override
            public void onResume() {
                super.onResume();
                ((AppCompatActivity)getActivity()).getSupportActionBar().setElevation(0);
            }
            

            【讨论】:

              【解决方案9】:

              将“#00000000”设置为工具栏的背景颜色, 请记住: 如果你使用 CoordinatorLayout 和 AppBarLayout ,你应该删除 app:layout_behavior="@string/appbar_scrolling_view_behavior" 在您的 contentView 中,我犯了这个基本错误。

              【讨论】:

              • 如果你使用标志你必须使用 view_behaviour
              【解决方案10】:

              当你在你的 appbarlayout 上添加高程 0dp 时,工具栏将完全消失。 所以你也应该在你的xml中添加translationZ。

              android:translationZ="0.1dp"
              app:elevation="0dp"
              

              看起来像 ->

                <com.google.android.material.appbar.AppBarLayout
                  android:id="@+id/toolbarLayout"
                  android:background="@android:color/transparent"
                  android:translationZ="0.1dp"
                  app:elevation="0dp"
                  android:theme="@style/ToolbarTheme"
                  >
              
                  <androidx.appcompat.widget.Toolbar
                      android:id="@+id/toolbar"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                     />
              </com.google.android.material.appbar.AppBarLayout>
              

              【讨论】:

                猜你喜欢
                • 2014-04-08
                • 1970-01-01
                • 1970-01-01
                • 2017-09-08
                • 1970-01-01
                • 2011-06-18
                • 2015-12-04
                • 2012-01-18
                • 2016-09-16
                相关资源
                最近更新 更多