Qu'est-il arrivé à windowContentOverlay dans Android API 18?
après avoir mis à jour mon téléphone pour Android 4.3 j'ai remarqué que l'ombre sous la barre d'action n'apparaît plus. Dans mon application j'ai une ombre personnalisée en utilisant windowContentOverlay
:
<item name="android:windowContentOverlay">@drawable/shadows_bottom</item>
il a toujours été affiché mais maintenant il est parti sur API 18. Supprimer cette ligne du thème ne change rien. alors que sur les autres versions D'API il affiche une ombre légère par défaut.
quelqu'un d'autre a remarqué ce problème?
2 réponses
j'ai pu contourner ce bogue de la plate-forme en ajoutant la méthode suivante à ma base FragmentActivity
et l'appel à onCreate
après la mise en page a été gonflé:
/**
* 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 parce que vous n'avez pas besoin de changer vos thèmes ou d'ajouter dynamiquement des vues à vos mises en page. Il doit être compatible avec la version forward et peut être facilement supprimé une fois que ce bogue a été corrigé.
C'est officiellement un bug et sera corrigé pour la prochaine version de la plateforme: https://code.google.com/p/android/issues/detail?id=58280
mise à jour: Cela semble être corrigé au niveau API 19