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?
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);
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>
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
fügen Sie app:elevation="0dp"
in AppBarLayout zum Ausblenden von Schatten in der Appbar hinzu
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>
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>
app:elevation="0dp"
aber nicht
Android:elevation="0dp"
arbeitete für mich an Android L
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);
.
.
}
Für Xamarin-Entwickler verwenden Sie bitte: SupportActionBar.Elevation = 0;
für AppCompatActivity
oder ActionBar.Elevation = 0;
für nicht kompatible Aktivitäten
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>
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.
Lösung für Kotlin (Android 3.3, Kotlin 1.3.20)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportActionBar!!.elevation = 0f
}