J'utilise actionbarsherlock. Le morceau de code ci-dessous est responsable de la modification de son arrière-plan en un arrière-plan personnalisé.
<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>
Et cela fonctionne pour actionbarsherlock (sur les versions ci-dessous en nid d'abeille). Mais dans ICS, j'ai une ombre au-dessous de la barre d’action que je ne souhaite pas. Quel est l'élément de style pour le faire disparaître?
Quel est l'élément de style pour le faire disparaître?
Afin de supprimer l'ombre, ajoutez ceci au thème de votre application:
<style name="MyAppTheme" parent="Android:Theme.Holo.Light">
<item name="Android:windowContentOverlay">@null</item>
</style>
UPDATE: Comme @ Quinny898 l'a déclaré, sur Android 5.0, la situation a changé: vous devez appeler setElevation(0)
sur votre barre d'actions. Notez que si vous utilisez la bibliothèque de support, vous devez l’appeler comme suit:
getSupportActionBar().setElevation(0);
Pour Android 5.0, si vous souhaitez le définir directement dans un style, utilisez:
<item name="Android:elevation">0dp</item>
et pour l'utilisation de la compatibilité de la bibliothèque de support:
<item name="elevation">0dp</item>
Exemple de style pour un thème léger AppCompat:
<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>
Appliquez ensuite ce style ActionBar personnalisé à votre thème d'application:
<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>
Pour les versions antérieures à Android 5.0, ajoutez également cela au thème de votre application:
<!-- Remove shadow below action bar Android < 5.0 -->
<item name="Android:windowContentOverlay">@null</item>
Sur Android 5.0, cela a changé, vous devez appeler setElevation (0) sur votre barre d’action. Notez que si vous utilisez la bibliothèque de support, vous devez l’appeler comme suit:
getSupportActionBar().setElevation(0);
Il n'est pas affecté par l'élément de style windowContentOverlay. Aucun changement de style n'est donc nécessaire.
ajouter app:elevation="0dp"
dans AppBarLayout pour masquer l'ombre dans la barre d'outils
Si vous travaillez avec ActionBarSherlock
Dans votre thème, ajoutez ceci:
<style name="MyTheme" parent="Theme.Sherlock">
....
<item name="windowContentOverlay">@null</item>
<item name="Android:windowContentOverlay">@null</item>
....
</style>
Vous devez définir app: elevetor = "0dp" dans Android.support.design.widget.AppBarLayout, puis cela fonctionnera: 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"
mais non
Android:elevation="0dp"
a travaillé pour moi sur Android L
J'ai le même problème et j'ai réussi à le résoudre. Tout ce que vous avez à faire est simplement de changer la valeur d'élévation à 0 en virgule flottante dans l'activité dans laquelle vous souhaitez supprimer l'élévation.
Si vous voulez le changer dans une activité appelée MyActivity.Java
, vous devez d'abord obtenir la ActionBar
.
Importez d'abord la classe ActionBar
import Android.support.v7.app.ActionBar;
après avoir importé, vous devez initialiser une variable de barre d’action et définir son altitude sur 0.
private ActionBar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
.
.
toolbar=getSupportActionBar();
toolbar.setElevation(0);
.
.
}
Pour les développeurs Xamarin, veuillez utiliser: SupportActionBar.Elevation = 0;
pour AppCompatActivity
ou ActionBar.Elevation = 0;
pour les activités non compatibles.
Essayez ça m'a aidé sans changer de thème. Placez votre AppBarLayout dans n’importe quelle mise en page. Nous espérons que cela vous aidera.
<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>
Pour ceux qui travaillent sur des fragments et qui disparaissent après la définition de toolbar.getBackground().setAlpha(0);
ou de toute disparition, je pense que vous devez amener votre AppBarLayout à la dernière position dans le fichier xml.
Solution pour Kotlin (Android 3.3, Kotlin 1.3.20)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportActionBar!!.elevation = 0f
}