Comment spécifier la taille de dialogue correcte dans le fichier de mise en page XML pour la boîte de dialogue Android?

J'ai créé une boîte de dialogue Android en utilisant un fichier de mise en page XML de la manière suivante:

final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.enabledialog); dialog.setTitle("Define message keys and setup"); Switch locationSwitch = (Switch) dialog.findViewById(R.id.locationSwitch); Switch blareSwitch = (Switch) dialog.findViewById(R.id.blareSwitch); final EditText locationEdit = (EditText) dialog.findViewById(R.id.locationEdit); final EditText blareEdit = (EditText) dialog.findViewById(R.id.blareEdit); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.copyFrom(dialog.getWindow().getAttributes()); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; dialog.show(); dialog.getWindow().setAttributes(lp); 

Cependant, le contenu de mon fichier XML ne prend que la moitié de l'écran, alors, lorsque j'ouvre la boîte de dialogue, je montre un espace supplémentaire qui n'a pas l'air sympa:

  • Comment créer dynamiquement des groupes et des enfants dans la liste extensible de json dans Android?
  • Comment faire défiler la mise en page qui a une vue de 3 listes
  • ImageView: adjustViewBounds ne fonctionne pas avec layout_height = "fill_parent"?
  • Comment obtenir le nombre de lignes de TextView?
  • OkHttp comment enregistrer le corps de demande
  • Unapsed Aapt Error
  • ICI EST UNE ESSAI DE COMMENT LE CONTACT DE DIALOGUE (R.layout.enabledialog):

    Entrez la description de l'image ici

    Comment couper cet espace supplémentaire? Dans le studio android, l'éditeur de mise en page suppose que le fichier XML doit prendre en compte l'ensemble de l'écran, mais vraiment, je souhaite seulement une petite fenêtre contextuelle.

    Merci,

    Ruchir


    EDIT: Voici mon fichier de ressources de mise en page:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#1dd1e9"> <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/locationSwitch" android:layout_marginTop="46dp" android:checked="false" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Blah" android:id="@+id/textView" android:textSize="30sp" android:layout_alignTop="@+id/locationSwitch" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Blah Blah Blah" android:id="@+id/textView2" android:gravity="center" android:textSize="20sp" android:layout_below="@+id/locationSwitch" android:layout_centerHorizontal="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/locationEdit" android:layout_below="@+id/textView2" android:layout_alignLeft="@+id/textView" android:layout_alignStart="@+id/textView" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" android:singleLine = "true" android:imeOptions="actionDone" /> <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/blareSwitch" android:layout_marginTop="40dp" android:checked="false" android:layout_below="@+id/locationEdit" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Blah" android:id="@+id/textView3" android:textSize="30sp" android:layout_alignBottom="@+id/blareSwitch" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Blah Blah Blah" android:id="@+id/textView4" android:textSize="20sp" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/blareEdit" android:layout_below="@+id/textView4" android:layout_alignLeft="@+id/locationEdit" android:layout_alignStart="@+id/locationEdit" android:layout_alignRight="@+id/locationEdit" android:layout_alignEnd="@+id/locationEdit" android:singleLine = "true" android:imeOptions="actionDone" /> </RelativeLayout> 

  • Android studio 2.0 bug: aucun changement à déployer
  • Comment mettre en œuvre le programme de référence dans les applications mobiles pour Android et iPhone
  • Reaction-native: commande introuvable
  • Dans une action snackbar, comment puis-je être sûr de pouvoir supprimer en permanence un enregistrement supprimé par soft de la base de données?
  • Nom du thème Android à partir de l'ID du thème
  • Android SyncAdapter à l'aide d'un compte Google
  • 9 Solutions collect form web for “Comment spécifier la taille de dialogue correcte dans le fichier de mise en page XML pour la boîte de dialogue Android?”

    Essayez de fill_parent par wrap_content dans votre RelativeLayout root, ainsi que de changer MATCH_PARENT à WRAP_CONTENT dans votre code Java (ou de vous débarrasser du bit setAttributes() entier.

    Je l'ai effectivement eu à MATCH_PARENT car, lorsqu'il s'agissait de WRAP_CONTENT, le contenu se chevaucha et ne correspond pas correctement

    Ensuite, c'est un problème distinct que vous devriez résoudre. Commencez par obtenir la taille de la boîte de dialogue pour être à peu près ce que vous voulez. Ensuite, utilisez un outil d'inspection (le nouveau dans AS 2.2, Hierarchy View, uiautomatorviewer , etc.) pour commencer à déterminer comment réparer votre mise en page pour éviter vos chevauchements.

    Essayez de modifier vos paramètres de mise en page hauteur à:

    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;

    J'ai généralement configuré LayoutParams programme. Je pense que vous pouvez essayer DialogFragment avec le code ci-dessous dans onResume :

     /** * Setup position of dialog */ protected void setupDialogPosition() { // setup the dialog WindowManager.LayoutParams p = getDialog().getWindow().getAttributes(); p.width = ViewGroup.LayoutParams.MATCH_PARENT; py = 0; // change height of dailog if (mHeight == ViewGroup.LayoutParams.MATCH_PARENT) { p.height = mScreenHeight - py; if (isStatusBarVisible()) { p.height -= getStatusBarHeight(); } } else { p.height = ViewGroup.LayoutParams.WRAP_CONTENT; } getDialog().getWindow().setGravity(mGravity); getDialog().getWindow().setAttributes(p); } 

    Change RelativeLayout vers LinearLayout:

     <LinearLayout android:layout_height="match_parent" android:layout_width="wrap_content" </LinearLayout> 

    J'ai trouvé une bonne bibliothèque pour les dialogues matériels dans github. Essayez ceci. Il gérera les mises en page pour vous.

    https://github.com/afollestad/material-dialogs

    Dans votre Relative Layout, spécifiez layout_height et layout_width, et ne le configurez pas dans fill_parent. Exemple:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="250dp" android:layout_height="wrap_content"> <TextView android:id="@+id/customdia_text" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_centerHorizontal="true" android:text="hello" /> <Button android:id="@+id/custdia_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ok" android:layout_marginBottom="30dp" android:layout_marginTop="20dp" android:layout_below="@+id/customdia_text" android:layout_centerHorizontal="true"/> </RelativeLayout> 

    Convertir directement de la valeur de la ressource:

     int width = getResources().getDimensionPixelSize(R.dimen.popup_width); int height = getResources().getDimensionPixelSize(R.dimen.popup_height); getDialog().getWindow().setLayout(width, height); 

    Maintenant match_parent dans votre mise en page pour la boîte de dialogue:

     android:layout_width="match_parent" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_height="match_parent" 

    J'espère que ceci vous aidera.

    Créer une boîte de dialogue personnalisée comme suit

     public class MyDialog extends Dialog { @Override public void onAttachedToWindow() { super.onAttachedToWindow(); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; getWindow().setAttributes(lp); } public MyDialog(Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog); } } 

    Regardez la méthode de substitution surAttachedToWindow (), voici votre truc. Cette méthode est appelée avant la méthode onCreate (). Afin que vous puissiez remplacer la propriété Windows (largeur et hauteur) avant que votre boîte de dialogue ne soit créée.

    Appelez cette boîte de dialogue de votre activité comme suit

     new MyDialog(ActivityContext).show(); 

    Également modifier certaines modifications dans le fichier dialog.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <Switch android:id="@+id/locationSwitch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginTop="46dp" android:checked="false" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/locationSwitch" android:layout_centerHorizontal="true" android:text="Blah" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="30sp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/locationSwitch" android:layout_centerHorizontal="true" android:gravity="center" android:text="Blah Blah Blah" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="20sp" /> <EditText android:id="@+id/locationEdit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignEnd="@+id/textView" android:layout_alignLeft="@+id/textView" android:layout_alignRight="@+id/textView" android:layout_alignStart="@+id/textView" android:layout_below="@+id/textView2" android:layout_marginBottom="50dp" android:imeOptions="actionDone" android:singleLine="true" /> </LinearLayout> 

    Modifiez le fichier de mise en page si vous souhaitez effectuer une personnalisation supplémentaire

    Modifiez la taille relative RelativeLayout selon l'exigence du fichier xml. Spécifiez la hauteur de ce dont vous avez besoin, comme ci-dessous

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="100dp" android:background="#1dd1e9"> <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/locationSwitch" android:layout_marginTop="46dp" android:checked="false" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Blah" android:id="@+id/textView" android:textSize="30sp" android:layout_alignTop="@+id/locationSwitch" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Blah Blah Blah" android:id="@+id/textView2" android:gravity="center" android:textSize="20sp" android:layout_below="@+id/locationSwitch" android:layout_centerHorizontal="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/locationEdit" android:layout_below="@+id/textView2" android:layout_alignLeft="@+id/textView" android:layout_alignStart="@+id/textView" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" android:singleLine = "true" android:imeOptions="actionDone" /> <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/blareSwitch" android:layout_marginTop="40dp" android:checked="false" android:layout_below="@+id/locationEdit" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Blah" android:id="@+id/textView3" android:textSize="30sp" android:layout_alignBottom="@+id/blareSwitch" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Blah Blah Blah" android:id="@+id/textView4" android:textSize="20sp" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/blareEdit" android:layout_below="@+id/textView4" android:layout_alignLeft="@+id/locationEdit" android:layout_alignStart="@+id/locationEdit" android:layout_alignRight="@+id/locationEdit" android:layout_alignEnd="@+id/locationEdit" android:singleLine = "true" android:imeOptions="actionDone" /> </RelativeLayout> 

    Modifiez la hauteur et la largeur selon les exigences et n'est pas nécessaire pour setAttributes (lp); En Java. Si vous configurez, assurez-vous que vous considérez la hauteur et l'épaisseur du rapport xml RelativeLayout

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.