您好我想从API 21及更高版本的工具栏中删除高程和阴影效果。以下是我试过的内容
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setElevation(0);
我的XML工具栏。我试图将高程设置为0dp
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:elevation="0dp"
android:theme="@style/ToolbarStyle"
app:theme="@style/ToolbarStyle"
>
这是ToolbarStyle,如果它有帮助
<style name="ToolbarStyle" parent="ThemeOverlay.AppCompat.Dark">
<item name="colorControlNormal">@android:color/white</item>
</style>
编辑1:在样式v21中尝试以下操作。结果仍然相同
<style name="ToolbarStyle" parent="ThemeOverlay.AppCompat.Dark">
<item name="colorControlNormal">@android:color/white</item>
<item name="android:elevation">0dp</item>
</style>
编辑2:工具栏位于我的布局中
android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/toolbar" />
答案 0 :(得分:103)
你可以通过一个简单的步骤来做到这一点。不要从布局中删除android.support.design.widget.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>
答案 1 :(得分:10)
这删除工具栏上的高程(android:stateListAnimator =“@ null”),stateListAnimator用于API级别21或更高,因此插入工具道具(在命名空间声明之前),如下所示:
//xmlns:tools="http://schemas.android.com/tools" in parent or start element
<android.support.design.widget.AppBarLayout
android:id="@+id/appBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stateListAnimator="@null"
android:theme="@style/AppTheme.AppBarOverlay"
tools:targetApi="21">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:elevation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
//your content goes here like RecyclerView, Card or other layout
以下是我的示例结果:
答案 2 :(得分:6)
在appBar上使用setOutlineProvider(null);
。请务必查看SDK版本。 :)
答案 3 :(得分:5)
只需删除布局层次结构的这一部分:
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
它负责创建阴影。工具栏本身不会投射任何阴影。
答案 4 :(得分:5)
转到要删除ActionBar高程的活动。 在setContent(....)之前,请求ActionBar功能(即如果你还没有直接声明它)
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getSupportActionBar().setElevation(0);
或者只是调用声明的工具栏变量 例如 toolbar.setElevation(0);
答案 5 :(得分:3)
在AppBarLayout中使用app:elevation="0dp"
。确保将工具栏放在AppBarLayout中,如下所示 -
<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/AppTheme.AppBarOverlay"
android:fitsSystemWindows="true"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/firstOption"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>
并将此行添加到您的活动中 - findViewById(R.id.appBarLayout).bringToFront();
这将把AppBar带到前面。
答案 6 :(得分:2)
为v21创建另一种样式并添加
<item name="android:elevation">@dimen/toolbar_elevation</item>
这种风格。在普通样式上不要使用高程,不要在xml中使用它,只需使用style="@style/yourCustomToolbarStyle"
答案 7 :(得分:2)
在代码中获取appbarlayout:
var appbarLayout = findviewbyid<AppBarLayout>(resource.id. );
设置属性
appbarLayout.StateListAnimator=null;
答案 8 :(得分:1)
解决方案很简单。只需将以下行添加到您的AppBar布局中即可。之后,无需为工具栏或AppBar布局添加高程。
android:stateListAnimator="@null"
答案 9 :(得分:1)
使用 android:outlineSpotShadowColor="assign transparent colour" 你的阴影会消失,我的工作如下
答案 10 :(得分:0)
要使用java代码删除高程,请仅使用以下一行... getSupportActionBar()setElevation(0);