49 votes

Comment puis-je atténuer l'arrière-plan lorsque Bottomsheet est affiché, sans utiliser Dialog ?

Je sais BottomSheetDialog le fait déjà, mais j'ai besoin d'utiliser l'habituelle BottomSheet et le comportement généré par BottomSheetBehavior.from() . Ce site BottomSheet n'atténue pas l'arrière-plan et la touche extérieure ne la ferme pas. Existe-t-il un moyen d'atténuer l'arrière-plan lorsque BottomSheet est affichée ? et peut-être la désactiver en touchant l'extérieur. En gros, le comportement est le suivant BottomSheetDialog mais je dois utiliser BottomSheet BottomSheetBehavior directement.

0 votes

Pourquoi devez-vous utiliser BottomSheetBehavior ?

3 votes

J'ai eu le même problème. Pour moi, la raison d'utiliser BottomSheet y BottomSheetBehavior au lieu de BottomSheetDialog(Fragment) est que le BottomSheet joue bien quand on montre le clavier. Utilisation de BottomSheetDialogFragment provoque des animations bizarres. Lorsque vous affichez le clavier, le DialogFragment s'adapte simplement à sa nouvelle position. BottomSheet s'anime doucement de haut en bas.

1 votes

Il y a une gradation de fond sans fragment hidroh.com/2016/06/17/bottom-sheet-everything (en anglais)

0voto

Harsh Dalwadi Points 317

Utilisez ce style et appliquez-le à votre dialogue.

PS : ce style fonctionne aussi parfaitement sous Android 6.0, 6.1 et 7.0.

<style name="MaterialDialogSheet" parent="@android:style/Theme.Dialog">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
    </style>
<style name="MaterialDialogSheetAnimation">
        <item name="android:windowEnterAnimation">@anim/popup_show</item>
        <item name="android:windowExitAnimation">@anim/popup_hide</item>
    </style>

Et utiliser comme :

final Dialog mBottomSheetDialog = new Dialog(mActivity, R.style.MaterialDialogSheet);

Merci.

0 votes

@tir38 ne jugez pas quelqu'un sans connaître le problème. ils ont mentionné qu'ils n'utilisaient pas le Fragment Dialog. vous feriez mieux de répondre à cette question sans déclasser les réponses des autres.

1 votes

Merci, cette réponse m'a aidé... !

0 votes

Pourriez-vous également partager le XML et le style des animations ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X