wake-up-neo.com

Entferne den Schatten unter der Aktionsleiste

Ich benutze Actionbarsherlock. Der folgende Code ist dafür verantwortlich, den Hintergrund in einen benutzerdefinierten zu ändern.

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="background">@drawable/actionbar_bg</item>
    <item name="Android:background">@drawable/actionbar_bg</item>
    <...>  
</style>

<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="Android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <..>
</style>

Und es funktioniert für actionbarsherlock (bei Versionen unterhalb der Wabe). Aber in ICS habe ich einen Schatten unter der Aktionsleiste, den ich nicht möchte. Was ist das Stilelement, damit es verschwinden kann?

191
Michał K

Was ist das Stilelement, um es verschwinden zu lassen?

Um den Schatten zu entfernen, fügen Sie dies Ihrem App-Design hinzu:

<style name="MyAppTheme" parent="Android:Theme.Holo.Light">
    <item name="Android:windowContentOverlay">@null</item>
</style>

UPDATE: Wie @ Quinny898 feststellte, hat sich dies auf Android 5.0 geändert. Sie müssen setElevation(0) in Ihrer Aktionsleiste aufrufen. Wenn Sie die Unterstützungsbibliothek verwenden, müssen Sie sie wie folgt aufrufen:

getSupportActionBar().setElevation(0);
467
Tomer Mor

Wenn Sie für Android 5.0 einen Stil direkt festlegen möchten, verwenden Sie Folgendes:

<item name="Android:elevation">0dp</item>

und für die Kompatibilität von Support-Bibliotheken:

<item name="elevation">0dp</item>

Stilbeispiel für ein AppCompat-Lichtdesign:

<style name="Theme.MyApp.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- remove shadow below action bar -->
    <!-- <item name="Android:elevation">0dp</item> -->
    <!-- Support library compatibility -->
    <item name="elevation">0dp</item>
</style>

Wenden Sie dann diesen benutzerdefinierten ActionBar-Stil auf Ihr App-Design an:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

Für Android-Versionen vor 5.0 fügen Sie dies auch zu Ihrem App-Design hinzu:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="Android:windowContentOverlay">@null</item>
124
Sloosh

Unter Android 5.0 hat sich dies geändert. Sie müssen setElevation (0) in Ihrer Aktionsleiste aufrufen. Wenn Sie die Unterstützungsbibliothek verwenden, müssen Sie sie wie folgt aufrufen:

getSupportActionBar().setElevation(0);

Es ist von dem windowContentOverlay-Stilelement nicht betroffen, daher sind keine Änderungen an Stilen erforderlich 

102
Kieron

fügen Sie app:elevation="0dp" in AppBarLayout zum Ausblenden von Schatten in der Appbar hinzu

44
Vijay Vavdiya

Wenn Sie mit ActionBarSherlock arbeiten

Fügen Sie in Ihrem Thema Folgendes hinzu:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="Android:windowContentOverlay">@null</item>
    ....
</style>
39
Dmitry Zaytsev

Sie müssen app: elevetor = "0dp" in Android.support.design.widget.AppBarLayout einstellen und dann funktioniert es: D 

<Android.support.design.widget.AppBarLayout
    app:elevation="0dp"... >

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


    </Android.support.v7.widget.Toolbar>

</Android.support.design.widget.AppBarLayout>
22
Nguyên Phạm
app:elevation="0dp" 

aber nicht

Android:elevation="0dp"

arbeitete für mich an Android L

7
YTerle

Ich habe das gleiche Problem und habe dieses Problem erfolgreich gelöst. Sie müssen lediglich die Höhe in der Aktivität, in der Sie die Höhe entfernen möchten, auf 0 Gleitkommawert ändern.

Wenn Sie es in einer Aktivität namens MyActivity.Java ändern möchten, müssen Sie zuerst die ActionBar abrufen.

Importieren Sie zunächst die ActionBar-Klasse

import Android.support.v7.app.ActionBar;

nach dem Import müssen Sie eine Variable der Aktionsleiste initialisieren und ihre Höhe auf 0 setzen.

 private ActionBar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    .
    .
    toolbar=getSupportActionBar();
    toolbar.setElevation(0);
    .
    .
    }
2
shubham gupta

Für Xamarin-Entwickler verwenden Sie bitte: SupportActionBar.Elevation = 0; für AppCompatActivity oder ActionBar.Elevation = 0; für nicht kompatible Aktivitäten

1
BYISHIMO Audace

Versuchen Sie dies, es hat mir geholfen, ohne das Thema zu wechseln. Fügen Sie Ihr AppBarLayout in ein beliebiges Layout ein

<RelativeLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">
<Android.support.design.widget.AppBarLayout
    Android:id="@+id/app_bar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:fitsSystemWindows="false"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        Android:layout_height="?attr/actionBarSize"
       Android:background="@color/white">
        <ImageView
            Android:src="@drawable/go_grocery_logo"
            Android:layout_width="108dp"
            Android:layout_height="32dp" />
    </Android.support.v7.widget.Toolbar>


</Android.support.design.widget.AppBarLayout>
</RelativeLayout>
1
Rahul

Für diejenigen, die an Fragmenten arbeiten und diese nach dem Setzen von toolbar.getBackground().setAlpha(0); oder dem Verschwinden verschwunden sind, denke ich, Sie müssen Ihr AppBarLayout bis zum Ende in der XML-Datei bringen.

0
Bowie Chang

Lösung für Kotlin (Android 3.3, Kotlin 1.3.20)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.elevation = 0f
}
0
zeeshan