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?

25
demandé sur Renjith 2013-07-30 15:27:20
la source

2 ответов

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é.

30
répondu twaddington 2013-08-07 07:01:16
la source

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

17
répondu Romain Piel 2013-11-09 12:18:03
la source