移除 android.widget.Toolbar 阴影
Posted
技术标签:
【中文标题】移除 android.widget.Toolbar 阴影【英文标题】:Remove android.widget.Toolbar shadow 【发布时间】: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:
。
【参考方案1】:
在您的工具栏上使用app:elevation="0dp"
而不是android:elevation
。
如果它不起作用,请将您的工具栏放在AppBarLayout
内并设置app:elevation="0dp"
:
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_
android:layout_
app:elevation="0dp">
...
</android.support.design.widget.AppBarLayout>
【讨论】:
使用这个工具栏完全消失了 另外添加android:translationZ="0.1dp"
见***.com/a/50775140/2347168【参考方案2】:
使用app:elevation="0dp"
属性到您的Toolbar
或AppBarLayout
来移除阴影。
#.如果您只使用Toolbar
,则将属性app:elevation="0dp"
添加到Toolbar
。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
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_
android:layout_
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
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_
android:layout_
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】:将此代码放入要隐藏ToolBar
的Fragment
中。
@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_
android:layout_
/>
</com.google.android.material.appbar.AppBarLayout>
【讨论】:
以上是关于移除 android.widget.Toolbar 阴影的主要内容,如果未能解决你的问题,请参考以下文章
setSupportActionBar 工具栏无法应用到 (android.widget.Toolbar) 错误