web-dev-qa-db-fra.com

Dialogue personnalisé trop petit

J'ai une activité Android qui implémente une boîte de dialogue personnalisée. L'application est en cours d'exécution mais la boîte de dialogue est trop petite. Je souhaite afficher une boîte de dialogue plus grande. Comment puis-je y parvenir? Voici ma mise en page 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="@color/white"
Android:orientation="vertical" >

         <LinearLayout 
         Android:layout_width="match_parent"
         Android:layout_height="wrap_content"
         Android:orientation="vertical"
         Android:background="@drawable/view_more_borders">

         <LinearLayout 
             Android:layout_width="match_parent"
             Android:layout_height="match_parent"
             Android:layout_weight="1"
             Android:orientation="horizontal"
             Android:layout_marginTop="4dp"
             Android:gravity="center_vertical">

             <TextView
                 Android:id="@+id/share_amount"
                 Android:layout_width="0dp"
                 Android:layout_height="wrap_content"
                 Android:layout_weight="1"
                 Android:text="Company Name:"
                 Android:textAppearance="?android:attr/textAppearanceSmall"
                 Android:textColor="@color/Nice_blue"
                 Android:typeface="sans" />

            <TextView
                Android:id="@+id/textViewCompanyName"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="1.80"
                Android:text=" "
                Android:textAppearance="?android:attr/textAppearanceSmall" />

         </LinearLayout>


         <LinearLayout 
             Android:layout_width="match_parent"
             Android:layout_height="match_parent"
             Android:layout_weight="1"
             Android:layout_marginTop="4dp"
             Android:gravity="center_vertical">

             <TextView
                Android:id="@+id/textView5"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="1"
                Android:text="Price per share:"

                Android:textAppearance="?android:attr/textAppearanceSmall"
                Android:textColor="@color/Nice_blue" />

            <TextView
                Android:id="@+id/textViewprice_pershare"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="2"
                Android:layout_alignBaseline="@+id/Yesterday"
                Android:layout_alignBottom="@+id/Yesterday"
                Android:layout_marginLeft="38dp"
                Android:fontFamily="sans-serif"
                Android:layout_toRightOf="@+id/company"
                Android:text=" "
                Android:textAppearance="?android:attr/textAppearanceSmall" />
         </LinearLayout>

         <LinearLayout 
             Android:layout_width="match_parent"
             Android:layout_height="match_parent"
             Android:layout_weight="1"
             Android:layout_marginTop="4dp"
             Android:gravity="center_vertical">

              <TextView
                    Android:id="@+id/textView4"
                  Android:layout_width="0dp"
                  Android:layout_height="wrap_content"
                  Android:layout_weight="1"
                  Android:text="Total cost:"

                  Android:textAppearance="?android:attr/textAppearanceSmall"
                  Android:textColor="@color/Nice_blue" />

            <TextView
                Android:id="@+id/textview_totalcost"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="2"
                Android:layout_alignBaseline="@+id/Yesterday"
                Android:layout_alignBottom="@+id/Yesterday"
                Android:layout_marginLeft="38dp"
                Android:fontFamily="sans-serif"
                Android:layout_toRightOf="@+id/company"
                Android:text=" "
                Android:textAppearance="?android:attr/textAppearanceSmall" />
         </LinearLayout>


         <LinearLayout 
             Android:layout_width="match_parent"
             Android:layout_height="match_parent"
             Android:layout_weight="1"
             Android:layout_marginTop="4dp"
             Android:gravity="center_vertical">

                 <TextView
            Android:id="@+id/textView3"
                     Android:layout_width="0dp"
                     Android:layout_height="wrap_content"
                     Android:layout_weight="1"
                     Android:text="Number of shares:"

                     Android:textAppearance="?android:attr/textAppearanceSmall"
                     Android:textColor="@color/Nice_blue" />

            <EditText
                Android:id="@+id/shareNumber"
                Android:layout_width="0dp"
                Android:layout_weight="2"
                Android:layout_height="wrap_content"
                Android:inputType="number"
                Android:fontFamily="sans-serif"
                Android:textSize="12sp"
                 >

            <requestFocus />
            </EditText>
         </LinearLayout>

         <LinearLayout 
             Android:layout_width="match_parent"
             Android:layout_height="match_parent"
             Android:layout_weight="1"
             Android:layout_marginTop="4dp"
             Android:gravity="center_vertical">


              <TextView
        Android:id="@+id/textView2"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="1"
                Android:text="Payment method:"

                Android:textAppearance="?android:attr/textAppearanceSmall"
                Android:textColor="@color/Nice_blue" />

             <Spinner
                 Android:id="@+id/spinner_paymentmode"
                 Android:layout_width="0dp"
                 Android:layout_height="wrap_content"
                 Android:layout_weight="2" />

         </LinearLayout>   
     </LinearLayout>
     <Button
    Android:id="@+id/button_buy_shares"
    style="@style/ButtonText"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/blue_button"
    Android:text="Buy" />

Et voici ma sortie. Je veux augmenter la largeur et la hauteur de la boîte de dialogue. enter image description here

Et mon fichier Java

public class MyDialogFragment extends DialogFragment {

public MyDialogFragment() {

}

private EditText mEditText;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.dialogfragment, container);
    // mEditText = (EditText) view.findViewById(R.id.txt_your_name);
    // getDialog().setTitle("Hello");
    getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);

    return view;
}
}
14
mungaih pk

Changez votre dimension de dialogue au moment de l'exécution:

yourDialog.show();
yourDialog.getWindow().setLayout((6 * width)/7, LayoutParams.WRAP_CONTENT);

Vous pouvez le faire pour les deux dimensions, dans mon exemple, je n’ai changé que la largeur. Espérons que cela aide!

MODIFIER

J'ai oublié de mentionner où j'ai pris la largeur:

DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;

EDIT 2

Essayez ce code:

Dialog yourDialog = dialogFragment.getDialog();
yourDialog.getWindow().setLayout((6 * width)/7, (4 * height)/5);
31
JJ86

Configuration d'Android: minWidth et Android: minHeight dans la présentation personnalisée me convient parfaitement.

8
George

mettre en dessous de la ligne dans onCreate 

setStyle(DialogFragment.STYLE_NO_TITLE, Android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth);

réponse originale

5
Din Islam Milon
<style name="full_screen_dialog" parent="@Android:style/Theme.Dialog">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowFullscreen">true</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation.Dialog</item>
    <item name="Android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:minWidth" type="dimen">600dp</item>
</style>

Utiliser ceci dans le fichier style.xml et utiliser ce style dans la classe de dialogue

5
Narendra

La bonne solution consiste à remplacer la méthode onCreateDialog plutôt que onCreateView et à créer votre boîte de dialogue avec un AlertDialog.Builder, comme expliqué dans la doc: http://developer.Android.com/reference/Android/app/DialogFragment.html#AlertDialog

2
Massimo

Les dialogues sont dimensionnés en fonction de leur contenu. Vous pouvez ajouter des marges de remplissage et des marges sur la disposition externe pour utiliser plus d'espace, mais cela ne redistribuera pas les vues à l'intérieur.

1
jboi

Essaye ça 

Pour régler la largeur et la hauteur de la boîte de dialogue en fonction de la taille de l'écran du périphérique

    Display display;
    int DisplayWidth, DisplayHeight, DialogWidth, DialogHeight;
    Dialog dialog;

display =((WindowManager)activity_context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        DisplayWidth = display.getWidth();
        DisplayHeight = display.getHeight();

        if(DisplayHeight > DisplayWidth)
        {
            DialogWidth = (6 * DisplayWidth) / 7 ;
            DialogHeight = (4 * DisplayHeight) / 5 ;
        }
        else
        {
            DialogWidth = (6 * DisplayWidth) / 9 ;
            DialogHeight = (4 * DisplayHeight) / 5 ;
        }

        dialog = new Dialog(activity_context);

          // Set your dialog width and height dynamically as per your screen.

        Window window = dialog.getWindow();
        window.setLayout(DialogWidth,DialogHeight);
        window.setGravity(Gravity.CENTER);

        dialog.show();
0
Andrain

essayez de définir Android:layout_height à une valeur pour la base LinearLayout

par exemple

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"

<!-- right here -->
    Android:layout_height="100dp"

Android:background="@color/white"
Android:orientation="vertical" >
0
Bogdan Ustyak

Ajouter Android: minWidth / Android: minHeight à votre vue racine. Voir exemple ci-dessous:

<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:minWidth="300dp"
Android:minHeight="500dp">
0
vanna