Comment puis-je avoir une ombre portée sur mon ActionBar (ActionBarSherlock)?
Je suis y compris mon style xml mise en page:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Styled" parent="Theme.Sherlock">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.MyApp.ActionBar</item>
</style>
<style name="Widget.MyApp.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
<item name="titleTextStyle">@style/Widget.MyApp.TitleTextStyle</item>
<item name="background">@color/red</item>
<item name="android:background">@color/red</item>
<item name="windowContentOverlay">@null</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="Widget.MyApp.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
<item name="android:textSize">21sp</item>
</style>
</resources>
Certains de la recherche sur internet suggèrent que l'utilisation windowContentOverlay ensemble de @null. Mais quand je l'utilise dans le style xml, ça ne change rien. Quelqu'un peut-il aider à quoi faire?
OriginalL'auteur Debopam Mitra | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez créer une ombre en dessous de l'ActionBar, vous avez à mettre
android:windowContentOverlay
paramètre sur l'application de thème (dans votre code, vous êtes la configuration incorrecte sur l'ActionBar style).Dans votre exemple, il serait:
À l'aide de
@null
valeur supprime l'ombre.Cette ligne définit l'ombre sur ActionBar sur Android 3.0 et versions plus récentes. Toutefois, si vous utilisez ActionBarSherlock, il ne fonctionnera pas comme prévu. Il permettrait de créer de l'ombre sur le haut de la fenêtre au-dessus du ActionBarSherlock sur les appareils Android système en cours d'exécution de plus que Android 4.0 (bien que ActionBar est présente dans l'api depuis Android 3.0, ActionBarSherlock utilise personnalisé de mise en œuvre pour toutes les versions d'Android les plus âgés que Android 4.0).
Pour créer de l'ombre en-dessous de ActionBarSherlock vous devez définir
windowContentOverlay
paramètre sur l'application de thème (remarquez le manqueandroid:
).De nouveau, à l'aide de
@null
supprime l'ombre.Bien que cette ligne fonctionne pour ActionBarSherlock, il ne fonctionne pas sur les appareils android fonctionnant sous Android 4.0 et plus récent, pas l'ombre est créée en vertu de l'ActionBar sur de tels appareils. Alors, comment combiner ces deux paramètres pour obtenir le désiré de l'ombre sous les deux ActionBar et ActionBarSherlock?
Utilisation configuration des ressources qualificatifs, dans votre cas, utiliser la plate-forme de la version de qualification.
Dans
res/values/styles.xml
utiliser le second code xml. Et dansres/values-v14/styles.xml
utiliser le premier code xml. Par conséquent, la ActionBarSherlock version est utilisée par défaut (pour les versions pré Android 4.0) et ActionBar version est utilisée pour Android 4.0 et plus récent.Edit:
Il y a un bug dans Android 4.3 (API level 18),
android:windowContentOverlay
ne fonctionne pas. Il devrait être corrigé dans une future version. Dans le cas où vous en avez besoin fixe dans Android 4.3, vous pouvez trouver des solutions de contournement lié dans le rapport de bug.OriginalL'auteur Tomik
Comme une réponse précédente n'a dire, utiliser "windowContentOverlay" dans l'application du thème et non PAS l'action de la barre de style.
Si vous voulez une ombre réaliste vous pouvez en trouver un dans la
"Votre Android Dossier"/plates-formes/android-16/data/res/drawable-hdpi/
ab_solid_shadow_holo.9.png et le copier sur votre drawable-hdpi dossier puis le résultat final est
OriginalL'auteur Stefan
En outre, au-dessus de API21(Lollipop), vous aurez besoin de ce code, trop.
OriginalL'auteur Kevin Liu