122 votes

Impossible de rendre le DialogFragment personnalisé 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..

Pour 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 le 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...

355voto

C.d. Points 3046

Essayer

 getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));
 

dans votre DialogFragment %% onCreateView

25voto

sahar Points 61

Essayez ceci ( Comment créer un DialogFragment 100% personnalisé ) ce travail pour la boîte de dialogue

     Dialog dialog = new Dialog(getActivity());

    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);      

        // layout to display
    dialog.setContentView(R.layout.add_edit);

    // set color transpartent
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

    dialog.show();
 

4voto

Hesam Points 6415

Ceux qui utilisent le générateur AlertDialog dans onCreateDialog au lieu de onCreateView peuvent attribuer un thème comme le code suivant. Un ensemble complet de thèmes peut être trouvé sur R.style . N'oubliez pas que certains d'entre eux ont été pris en charge récemment et ne sont pas disponibles sur les anciens téléphones de l'appareil.

 @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Translucent);
        View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_album, null);
        builder.setView(view);

        return builder.create();
    }
 

3voto

Kitesurfer Points 740

Essayez ceci si vous aimez:

 public TransparentDialog()
{
    super();
    setStyle(STYLE_NO_FRAME, R.style.AppTheme);
}
 

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