Après la mise à niveau de mon téléphone vers Android 4.3, j'ai remarqué que l'ombre sous la barre d'action ne s'affiche plus. Dans mon application, j'ai une ombre personnalisée en utilisant windowContentOverlay
:
<item name="Android:windowContentOverlay">@drawable/shadows_bottom</item>
Cela a toujours été affiché, mais maintenant c'est parti pour l'API 18. Supprimer cette ligne du thème ne change rien. tandis que sur d'autres versions d'API, il présente une légère ombre par défaut.
Quelqu'un d'autre a remarqué ce problème?
Ceci est officiellement un bug et sera corrigé pour la prochaine version de la plateforme: https://code.google.com/p/Android/issues/detail?id=5828
MISE À JOUR: Cela semble être corrigé au niveau de l'API 19
J'ai pu contourner ce bogue de plate-forme en ajoutant la méthode suivante à ma base FragmentActivity
et en l'appelant dans onCreate
une fois la mise en page gonflée:
/**
* Set the window content overlay on device's that don't respect the theme
* attribute.
*/
private void setWindowContentOverlayCompat() {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR2) {
// Get the content view
View contentView = findViewById(Android.R.id.content);
// Make sure it's a valid instance of a FrameLayout
if (contentView instanceof FrameLayout) {
TypedValue tv = new TypedValue();
// Get the windowContentOverlay value of the current theme
if (getTheme().resolveAttribute(
Android.R.attr.windowContentOverlay, tv, true)) {
// If it's a valid resource, set it as the foreground drawable
// for the content view
if (tv.resourceId != 0) {
((FrameLayout) contentView).setForeground(
getResources().getDrawable(tv.resourceId));
}
}
}
}
}
Cela fonctionne bien car vous n'avez pas à modifier vos thèmes ni à ajouter dynamiquement des vues à vos mises en page. Il doit être compatible avec le futur et peut être facilement supprimé une fois ce bogue corrigé.