studio - Android: no puedo eliminar elevación/sombra en mi barra de herramientas
android studio (9)
Crea otro estilo para v21 y agrega
<item name="android:elevation">@dimen/toolbar_elevation</item>
a ese estilo. En estilo normal, no use elevación y no lo use en xml, solo use style="@style/yourCustomToolbarStyle"
Hola, me gustaría eliminar el efecto de sombra y elevación de mi barra de herramientas para API 21 y superior. Debajo está lo que he intentado
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setElevation(0);
Mi barra de herramientas en XML. Intenté establecer la elevación a 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"
>
Y esto es ToolbarStyle si ayuda
<style name="ToolbarStyle" parent="ThemeOverlay.AppCompat.Dark">
<item name="colorControlNormal">@android:color/white</item>
</style>
Edición 1: Intenté lo siguiente en estilos v21. Aún el mismo resultado
<style name="ToolbarStyle" parent="ThemeOverlay.AppCompat.Dark">
<item name="colorControlNormal">@android:color/white</item>
<item name="android:elevation">0dp</item>
</style>
Editar 2: donde la barra de herramientas está en mi diseño
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" />
Esto elimina la elevación en la barra de herramientas (android: stateListAnimator = "@ null"), stateListAnimator es para nivel de API 21 o superior, por lo tanto, inserte una herramienta prop (antes de la declaración del espacio de nombres) de esta manera:
//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
Aquí está el resultado de mi muestra:
Obtenga la aplicaciónbarrayout en el código:
var appbarLayout = findviewbyid<AppBarLayout>(resource.id. );
establecer la propiedad
appbarLayout.StateListAnimator=null;
Para eliminar la elevación usando el código java use solo una línea debajo ... getSupportActionBar (). SetElevation (0);
Puedes hacer eso con un paso fácil. No elimine el android.support.design.widget.AppBarLayout
de su diseño, en su lugar agregue la app:elevation="0dp"
atributo app:elevation="0dp"
a él. Su diseño final será:
<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>
Simplemente elimine esta parte de su jerarquía de diseño:
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
Es responsable de crear sombra. La barra de herramientas en sí misma no proyecta ninguna sombra.
Use setOutlineProvider(null);
en tu aplicaciónBar. Solo asegúrate de verificar la versión del SDK. :)
Use la app:elevation="0dp"
en su AppBarLayout. Asegúrate de poner la barra de herramientas dentro de tu AppBarLayout así:
<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>
y agregue esta línea a su actividad: findViewById(R.id.appBarLayout).bringToFront();
Esto traerá la AppBar al frente.
Vaya a la actividad que desea eliminar la elevación de la barra de acciones. Antes de setContent (....), solicite la función ActionBar (es decir, si no la ha declarado directamente)
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getSupportActionBar().setElevation(0);
o simplemente llame a la variable declarada Toolbar, por ejemplo, toolbar.setElevation (0);