web-dev-qa-db-fra.com

Android obtenir toute la largeur pour un dialogue personnalisé

dans mon application, ma boîte de dialogue personnalisée créée n'a pas toute la hauteur et je ne peux pas modifier ni personnaliser that.for example voir cette capture d'écran:

enter image description here Mon code:

final Dialog contacts_dialog = new Dialog(ActivityGroup.this, R.style.theme_sms_receive_dialog);
contacts_dialog.setContentView(R.layout.dialog_schedule_date_time);
contacts_dialog.setCancelable(true);
contacts_dialog.setCanceledOnTouchOutside(true);
contacts_dialog.show();

disposition:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/layoutRoot"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:background="@null"
    Android:orientation="vertical" >

    <LinearLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:background="@drawable/shape_header_dialog_background"
        Android:orientation="horizontal"
        Android:padding="4dp" >

        <TextView
            Android:id="@+id/TextView21"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:layout_marginRight="5dp"
            Android:layout_weight="2"
            Android:gravity="center_vertical|right"
            Android:text="@string/choose_schedule_time_date"
            Android:textColor="#ffffff"
            Android:textSize="14sp"
            Android:textStyle="bold" />

        <ImageView
            Android:id="@+id/ImageView03"
            Android:layout_width="50dp"
            Android:layout_height="50dp"
            Android:layout_marginTop="0dp"
            Android:background="@drawable/icon_scudule_time" />
    </LinearLayout>

</LinearLayout>

Style:

<style name="theme_sms_receive_dialog" parent="Android:style/Theme.Dialog">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:background">@Android:color/transparent</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="numberPickerStyle">@style/NPWidget.Holo.Light.NumberPicker</item>
</style>
29
DolDurma

Cela peut être fait de deux manières, la première dans style.xml et la deuxième dans le code:

  1. Ajoutez comme ci-dessous dans style.xml, modifiez la valeur (90% actuellement) pour répondre à vos besoins.
<style name="Theme_Dialog" parent="Android:Theme.Holo.Dialog">
    <item name="Android:windowMinWidthMajor">90%</item>
    <item name="Android:windowMinWidthMinor">90%</item>
</style>
  1. Ajouter setlayout à match_parent
 final Dialog contacts_dialog = new Dialog(ActivityGroup.this,
 R.style.theme_sms_receive_dialog);
 contacts_dialog.setContentView(R.layout.dialog_schedule_date_time);
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);

 contacts_dialog.setCancelable(true);
 contacts_dialog.setCanceledOnTouchOutside(true);
 contacts_dialog.show();
59
Psypher

Vous devez obtenir la fenêtre actuelle et définir la valeur LayoutParams comme suit:

Dialog d=new Dialog(mContext,R.style.mydialog);
.........
.........
myDialog.show();
Window window = myDialog.getWindow();
window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

Alternative (si la solution ci-dessus ne fonctionne pas)

Si le code ci-dessus ne fonctionne pas bien, vous pouvez utiliser une solution de contournement.

styles.xml

<style name="mydialog"></style>

Java

Dialog d=new Dialog(mContext,R.style.mydialog);
.........
.........
myDialog.show();
Window window = myDialog.getWindow();
window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
56
Abhishek Singh

Pour une boîte de dialogue pleine largeur, vous pouvez créer un style personnalisé pour la boîte de dialogue. Le code est donné ci-dessous pour la boîte de dialogue pleine largeur:

<style name="Custom_Dialog" parent="ThemeOverlay.AppCompat.Light" >
    <item name="windowMinWidthMajor">100%</item>
    <item name="windowMinWidthMinor">65%</item>
</style>

Pour affecter ce style au constructeur de la boîte de dialogue, ajoutez ceci à la méthode onCreate() juste après la fonction setContentView():

getWindow()
    .setLayout(
        ViewGroup.LayoutParams.FILL_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT
    );
7
Hardeep Kumar

Dans mon cas, la largeur de la boîte de dialogue personnalisée diminue en taille (largeur) au fur et à mesure que le contenu de la boîte de dialogue devient plus petit, même si la propriété width a été définie

Android:layout_width="match_parent"

Je viens de fixer cette largeur à la taille de l'écran et maintenant son fonctionnement en fonction de mes besoins

Android:layout_width="320dp"
2
shehzy

Si quelqu'un se demande comment procéder pour une boîte de dialogue affichée à l'aide de DialogFragment, vous pouvez remplacer onCreateDialog pour renvoyer une boîte de dialogue avec un style personnalisé avec windowMinWidthMajor et mineur défini à 90%

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    return new Dialog(getActivity(), R.style.WideDialog);
}

Style:

<style name="WideDialog" parent="Base.Theme.AppCompat.Dialog">
    <item name="Android:windowMinWidthMajor">90%</item>
    <item name="Android:windowMinWidthMinor">90%</item>
</style>
2
Amarghosh

Ajouter du code lorsque vous souhaitez ouvrir une boîte de dialogue

       final Dialog mBottomSheetDialog = new Dialog(getActivity(), R.style.MaterialDialogSheet);

        mBottomSheetDialog.setContentView(R.layout.dialog_mainscreen_filter); // your custom view.
        mBottomSheetDialog.setCancelable(true);
        mBottomSheetDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        mBottomSheetDialog.getWindow().setGravity(Gravity.BOTTOM);
        mBottomSheetDialog.show();


        ImageView img_cross = mBottomSheetDialog.findViewById(R.id.img_cross);
        final ImageView img_new = mBottomSheetDialog.findViewById(R.id.img_new);
        final ImageView img_Used = mBottomSheetDialog.findViewById(R.id.img_Used);


        img_cross.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mBottomSheetDialog.dismiss();
            }
        });


        img_new.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                img_new.setImageResource(R.drawable.checkbox_tick);
                img_Used.setImageResource(R.drawable.checkbox_tick_gray);
            }
        });
        img_Used.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                img_Used.setImageResource(R.drawable.checkbox_tick);
                img_new.setImageResource(R.drawable.checkbox_tick_gray);
            }
        });

xml de la boîte de dialogue

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    >


    <Android.support.v7.widget.CardView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:app="http://schemas.Android.com/apk/res-auto"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:cardBackgroundColor="@color/colorWhite"
        app:cardCornerRadius="5dp"
        app:cardElevation="@dimen/margin_10">

        <LinearLayout xmlns:app="http://schemas.Android.com/apk/res-auto"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:orientation="vertical"
            Android:padding="@dimen/margin_10">

            <RelativeLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content">

                <TextView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerVertical="true"
                    Android:text="@string/filter"
                    Android:textStyle="bold"
                    Android:textColor="@color/colorGreen"
                    Android:textSize="@dimen/font_large" />

                <ImageView
                    Android:id="@+id/img_cross"
                    Android:layout_width="25dp"
                    Android:layout_height="25dp"
                    Android:layout_alignParentRight="true"
                    Android:layout_centerVertical="true"
                    Android:src="@drawable/cross" />
            </RelativeLayout>

            <View
                Android:layout_width="match_parent"
                Android:layout_height="1dp"
                Android:layout_marginTop="@dimen/margin_20"
                Android:background="@color/colorfaintGreen" />

            <LinearLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="@dimen/margin_20"
                Android:gravity="center_vertical"
                Android:orientation="horizontal">

                <ImageView
                    Android:id="@+id/img_new"
                    Android:layout_width="25dp"
                    Android:layout_height="25dp"
                    Android:src="@drawable/checkbox_tick" />

                <TextView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginLeft="@dimen/margin_10"
                    Android:text="@string/New"
                    Android:textColor="@color/colorText"
                    Android:textSize="@dimen/fontsize_normal"
                    Android:textStyle="bold" />

                <ImageView
                    Android:id="@+id/img_Used"
                    Android:layout_width="25dp"
                    Android:layout_height="25dp"
                    Android:layout_marginLeft="@dimen/margin_30"
                    Android:src="@drawable/checkbox_tick_gray" />

                <TextView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_marginLeft="@dimen/margin_10"
                    Android:text="@string/Used"
                    Android:textColor="@color/colorText"
                    Android:textSize="@dimen/fontsize_normal"
                    Android:textStyle="bold" />

            </LinearLayout>

            <View
                Android:layout_width="match_parent"
                Android:layout_height="1dp"
                Android:layout_marginTop="@dimen/margin_20"
                Android:background="@color/colorfaintGreen" />

            <LinearLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="@dimen/margin_20"
                Android:orientation="horizontal">

                <LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:gravity="center"
                    Android:orientation="vertical">

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="00"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_medium"
                        Android:textStyle="bold" />

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="|"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_normal"
                        Android:textStyle="bold" />
                </LinearLayout>

                <LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:gravity="center"
                    Android:orientation="vertical">

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="50"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_medium"
                        Android:textStyle="bold" />

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="|"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_normal"
                        Android:textStyle="bold" />
                </LinearLayout>

                <LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:gravity="center"
                    Android:orientation="vertical">

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="100"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_medium"
                        Android:textStyle="bold" />

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="|"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_normal"
                        Android:textStyle="bold" />
                </LinearLayout>

                <LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:gravity="center"
                    Android:orientation="vertical">

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="200"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_medium"
                        Android:textStyle="bold" />

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="|"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_normal"
                        Android:textStyle="bold" />
                </LinearLayout>

                <LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:gravity="center"
                    Android:orientation="vertical">

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="200+"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_medium"
                        Android:textStyle="bold" />

                    <TextView
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:text="|"
                        Android:textColor="@color/colorTextGray"
                        Android:textSize="@dimen/fontsize_normal"
                        Android:textStyle="bold" />
                </LinearLayout>


            </LinearLayout>

            <RelativeLayout
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content">

                <ImageView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerVertical="true"
                    Android:layout_marginLeft="22dp"
                    Android:layout_marginTop="@dimen/margin_20"
                    Android:src="@drawable/filled_green" />

                <SeekBar
                    Android:id="@+id/seekbar"
                    style="@style/SeekBarWithoutSteps"
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_marginLeft="22dp"
                    Android:layout_marginRight="22dp"
                    Android:layout_marginTop="@dimen/margin_10"
                    Android:max="4"
                    Android:maxHeight="@dimen/margin_5"
                    Android:minHeight="@dimen/margin_5"
                    Android:paddingLeft="@dimen/margin_10"
                    Android:paddingRight="@dimen/margin_10"
                    Android:progressBackgroundTint="@color/colorGray"
                    Android:progressTint="@color/colorGreen"
                    Android:theme="@style/Widget.AppCompat.SeekBar.Discrete"
                    Android:thumb="@drawable/filled_green"
                    Android:thumbOffset="15dp" />


            </RelativeLayout>

            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center_horizontal"
                Android:text="@string/search_near_me_in_km"
                Android:textColor="@color/colorTextGray"
                Android:textSize="@dimen/fontsize_normal"
                Android:textStyle="bold" />


            <Button
                Android:id="@+id/btn_register"
                Android:layout_width="match_parent"
                Android:layout_height="@dimen/btn_height"
                Android:layout_marginBottom="@dimen/margin_10"
                Android:layout_marginTop="@dimen/margin_10"
                Android:background="@drawable/btn_bg_green_rounded"
                Android:text="@string/submit"
                Android:textColor="@color/colorWhite"
                Android:textSize="@dimen/fontsize_medium" />

        </LinearLayout>


    </Android.support.v7.widget.CardView>
</LinearLayout>

Style.xml ------------------------------------------

     <style name="MaterialDialogSheet" parent="@Android:style/Theme.Dialog">
        <item name="Android:windowIsTranslucent">true</item>
        <item name="Android:windowBackground">@Android:color/white</item>
        <item name="Android:windowContentOverlay">@null</item>
        <item name="Android:windowNoTitle">true</item>
        <item name="Android:backgroundDimEnabled">true</item>
        <item name="Android:windowIsFloating">false</item>
        <item name="Android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
    </style>


    <style name="MaterialDialogSheetAnimation">
        <item name="Android:windowEnterAnimation">@anim/popup_show</item>
        <item name="Android:windowExitAnimation">@anim/popup_hide</item>
    </style>

Ajouter des animations dans le dossier res: Anim/popup_show.xml

      <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:Android="http://schemas.Android.com/apk/res/Android">
        <translate
            Android:duration="300"
            Android:fromYDelta="100%p"
            Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
            Android:toYDelta="0" />
    </set>

anim/popup_hide.xml

        <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:Android="http://schemas.Android.com/apk/res/Android">
        <translate
            Android:duration="300"
            Android:fromYDelta="0"
            Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
            Android:toYDelta="100%p" />
    </set>
1
Pratibha Sarode

Utilisez la disposition relative au lieu de la disposition linéaire pour obtenir toute la largeur de la boîte de dialogue personnalisée.

1
mehmoodnisar125

Vous n'avez pas besoin d'ajouter de style pour cela, essayez juste en dessous d'un

  Dialog dialog = new Dialog(context);
  dialog.setContentView(R.layout.your_layout_here);
  dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  dialog.show();

Remarque: l’utilisation de style vide prend beaucoup de temps de mémoire dans le processeur. Utilisez plutôt directement dailog.getWindow().setLayout(width,height).

1
Sushil Kumar
Dialog dialog = new Dialog(BASE_CONTEXT, R.style.Theme_Dialog);  
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);  
dialog.setContentView(R.layout.your_layout);  
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
1
Prateek Bhardwaj

Cette réponse pourrait vous être utile . Largeur du dialogue Android

0
Rahul Sharma
MyDialogFragment myDialogFragment = 
    new MyDialogFragment(activity,arraylist.get(position).getImage());
                                myDialogFragment.show();

Window window = myDialogFragment.getWindow();
        window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
0
@Override public void onStart() {
    super.onStart();
    Dialog dialog = getDialog();
    if (dialog != null) {
        dialog.getWindow()
                .setLayout((int) (getScreenWidth(getActivity()) * .9), (int)(getScreenHeight(getActivity()) * .6) );
    }
}

public static int getScreenWidth(Activity activity) {
    Point size = new Point();
    activity.getWindowManager().getDefaultDisplay().getSize(size);
    return size.x;
}

public static int getScreenHeight(Activity activity) {
    Point size = new Point();
    activity.getWindowManager().getDefaultDisplay().getSize(size);
    return size.y;
}

exemple de 90% largeur et 60% hauteur

0
Pablo Cegarra