Ne pouvez pas faire la coutume DialogFragment transparent sur le Fragment
J'ai besoin de créer un dialogue sur un fragment (qui prend tout l'écran). La boîte de dialogue doit être une boîte de dialogue flottante qui sera positionné sur le fragment avec le fragment grisées à l'extérieur du fragment..
De la boîte de Dialogue personnaliser, j'ai un linearLayout qui a les bords arrondis, peu importe ce que je fais, la boîte de dialogue a un noir en bordure de tous les côtés (très petit). J'ai tout essayé pour qu'il soit transparent et de s'en aller (ainsi, le dialogue est tout le linéaire de la mise en page - courbe de la boîte)
Pour la DialogFragment, c'est ce que j'ai pour onCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null);
LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item);
populateItemData(item, inflater);
return layout;
}
custom_dialog est juste un LinearLayout qui a android:fond ensemble de #000000
C'est mon style de la boîte de Dialogue personnaliser
<style name="CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:alwaysDrawnWithCache">false</item>
<item name="android:windowContentOverlay">@null</item>
</style>
J'ai essayé toutes sortes de combinaisons dans ce style (de ce que j'ai vu en ligne) et je ne peut pas se débarrasser de l'ennuyeux noir encadrant, je peux le peindre en blanc ou toute autre couleur si j'ai mis que LinearLayout de fond à rien d'autre que #000000...
J'ai passé littéralement 3-4 heures sur ce, j'espère que quelqu'un d'autre peut aider...
Vous devez vous connecter pour publier un commentaire.
Essayer
dans votre
DialogFragment
'sonCreateView
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Dialog.getWindow()' on a null object reference
.getDialog().getWindow().setBackgroundDrawableResource(android.R.color.transparent);
à la place. Afin de ne pas se prévaloir d'une exception, vous devez appeler unDialogFragment
de l'Activité ou du Fragment pardialogFragment.show(...);
méthode, pas FragmentTransaction deadd
.Essayez ceci (Comment puis-je créer un 100% personnalisé DialogFragment)
ce travail de dialogue
Dans
onActivityCreated
pour
DialogFragment
transparentDéfinir votre thème comme cela a fonctionné pour moi
Et dans votre boîte de dialogue fragment défini comme ce
Pour complètement transparent utilisation:
setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Pour arrière-plan personnalisé -créer un fichier de style en vous les valeurs de dossier (values/style.xml) et les utiliser:
setStyle(DialogFragment.STYLE_NO_FRAME, yourpackagename.R.style.YOURE_CUSTOM_STYLE);
dans votre fichier de style de remplacer l'attribut:
android:windowBackground être @couleur/DialogBackgroundBlackSemiTransparent
Ceux qui sont à l'aide de AlertDialog builder dans
onCreateDialog
au lieu deonCreateView
peut attribuer à thème comme le code suivant. Ensemble complet de thèmes peuvent être trouvés à partir de R. style. N'oubliez pas que certains d'entre eux pris en charge récemment et ne sont pas disponibles sur l'ancien appareil téléphones.Vous pouvez atteindre par l'ajout de cette dans
Dialogue Fragment ou BottomSheetDialogFragment
Dans
onCreateDialog
MéthodeÀ essayer si vous aimez: