Je travaille sur une application Android où j'utilise DialogFragment
pour afficher la boîte de dialogue mais sa largeur est très petite. Comment puis-je lui faire cette largeur fill_parent
?
public class AddNoteDialogFragment extends DialogFragment {
public AddNoteDialogFragment() {
// Empty constructor required for DialogFragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getDialog().setTitle(getString(R.string.app_name));
View view = inflater.inflate(R.layout.fragment_add_note_dialog,
container);
return view;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
// request a window without the title
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
}
fragment_add_note_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<EditText
android:id="@+id/addNoteEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:hint="@string/clock_enter_add_note"
android:imeOptions="actionDone"
android:inputType="textCapSentences|textMultiLine"
android:lines="5" />
<Button
android:id="@+id/submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/login_button"
android:text="@string/submit_button"
android:textColor="@android:color/white" />
</LinearLayout>
Réponses:
Voici la solution que j'ai trouvée pour gérer ce problème:
Éditer:
Vous pouvez utiliser le code ci-dessous dans la
onCrateView
méthode de Fragment avant de retourner la vue gonflée.la source
dialog.getWindow().setBackgroundDrawable(null);
getDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
laonResume()
méthode DialogFragment . Cela n'a pas fonctionné sur laonCreateView()
méthode. J'ai légèrement modifié la réponse dedialog
àgetDialog()
.setLayout
dans laonStart
méthode fonctionne parfaitement. Merci.Avez-vous essayé d'utiliser la réponse d'Elvis de Comment faire en sorte qu'une boîte de dialogue d'alerte remplisse 90% de la taille de l'écran ?
C'est le suivant:
Mettre à jour:
Le code ci-dessus doit être ajouté à l'intérieur de la
onStart()
méthode duDialogFragment
.la source
WindowManager.LayoutParams.FILL_PARENT
.ViewGroup.LayoutParams
, donc cela fonctionne parfaitement de toute façon.onStart
méthode du DialogFragment pour fonctionner.onCreateDialog
Cela a fonctionné pour moi
Créez votre style personnalisé:
Vous pouvez également essayer d'utiliser le bon parent pour correspondre à vos autres boîtes de dialogue. par exemple
parent="ThemeOverlay.AppCompat.Dialog"
et ainsi de suite.Utilisez ce style dans votre boîte de dialogue
la source
Pour moi, cela a fonctionné lorsque j'ai remplacé le parent LinearLayout de la mise en page gonflée dans onCreateView par RelativeLayout. Aucun autre changement de code requis.
la source
en haut de ma mise en page de dialogue a fait l'affaire.
la source
et si vous voulez beaucoup plus de flexibilité, vous pouvez étendre AppCompat_Dialog_Alert et les attributs personnalisés
la source
Sur la base d'autres solutions, j'ai créé la mienne.
la source
Dans mon cas, j'ai également utilisé l'approche suivante:
Mais il y avait encore de petits écarts entre les bords gauche et droit de la boîte de dialogue et les bords de l'écran sur certains appareils Lollipop + (par exemple Nexus 9).
Ce n'était pas évident, mais j'ai finalement compris que pour le rendre pleine largeur sur tous les appareils et plates-formes , l'arrière-plan de la fenêtre devrait être spécifié à l'intérieur de styles.xml comme suit:
Et bien sûr, ce style doit être utilisé lorsque nous créons la boîte de dialogue comme suit:
la source
Je veux clarifier cela. Les deux méthodes sont bonnes, mais avec des DialogFragment différents .
En utilisant
android.app.DialogFragment
En utilisant
android.support.v4.app.DialogFragment
la source
Une autre solution qui fonctionne pour moi sans effets secondaires était:
Dans votre classe qui étend DialogFragment:
Dans vos styles:
la source
setStyle()
Cela fonctionne parfaitement pour moi.
Grâce à cela, vous pouvez donner la largeur au fragment de dialogue.
la source
User AlertDialog.Builder dans votre DialogFragment. Ajoutez-le dans une
onCreateDialog
méthode comme celle-ci. EtonCreateView
ne rien faire.la source
Créez un style personnalisé dans votre fichier style.xml. Copiez simplement et collez ce code dans votre fichier style.xml
Ensuite, dans la méthode createDialog de votre DialogFragment, créez l'objet de dialogue par le code
Cela fonctionne pour moi et j'espère que cela vous aidera aussi
la source
C'est ainsi que j'ai résolu ce problème. Essaye ça.
dans le onActivityCreated de votre DialogFragment, ajoutez ce code selon votre besoin ....
la source
utilisez ceci dans la méthode onCreateView de DialogFragment
220 est la hauteur du fragment de dialogue, changez-le comme vous le souhaitez
la source
dans votre racine de mise en page, définissez android: minWidth sur une très grande valeur, par exemple
la source
J'ai essayé plusieurs réponses énumérées ci-dessus; ils n'ont pas fonctionné pour moi. Voici la solution à mon problème:
Dans
DialogFragment()
, ajoutez les codes ci-dessous:la source