it-roy-ru.com

Android получит полную ширину для пользовательского диалога

в моем приложении мой созданный пользовательский диалог не имеет полной высоты, и я не могу изменить и настроить его. Например, смотрите этот снимок экрана:

enter image description here Мой код:

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();

расположение:

<?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 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

Это можно сделать двумя способами: сначала в style.xml, а затем в коде:

  1. Добавьте, как показано ниже, в style.xml, измените значение (в настоящее время 90%) в соответствии с вашими потребностями.
<style name="Theme_Dialog" parent="Android:Theme.Holo.Dialog">
    <item name="Android:windowMinWidthMajor">90%</item>
    <item name="Android:windowMinWidthMinor">90%</item>
</style>
  1. Добавить 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

Вам нужно получить текущее окно и установить его LayoutParams следующим образом:

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

Альтернатива (если вышеуказанное решение не работает)

В случае, если приведенный выше код не работает хорошо, вы можете использовать обходной путь

styles.xml

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

Джава

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

Для полной ширины диалога вы можете создать собственный стиль для диалога. Код приведен ниже для полной ширины диалога:

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

Чтобы назначить этот стиль конструктору диалога, добавьте его в метод onCreate() сразу после setContentView():

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

В моем случае ширина настраиваемого диалогового окна уменьшается в размере (ширине), так как содержимое внутри диалогового окна становится меньше по ширине, даже если свойство width было установлено

Android:layout_width="match_parent"

Я просто установил эту ширину на размер экрана, и теперь она работает в соответствии с моими требованиями

Android:layout_width="320dp"
2
shehzy

В случае, если кому-то интересно, как это сделать для диалогового окна, показанного с использованием DialogFragment, вы можете переопределить onCreateDialog, чтобы вернуть диалог с пользовательским стилем, для которого windowMinWidthMajor и второстепенное значение установлено на 90%.

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

Стиль:

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

Добавьте код, когда вы хотите открыть диалог

       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 диалога

<?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>

Добавить анимацию в папку 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>

аним/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

Используйте Относительный макет вместо линейного макета, чтобы получить полную ширину настраиваемого диалога.

1
mehmoodnisar125

Вам не нужно добавлять какой-либо стиль для этого просто попробуйте ниже одного

  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();

Примечание: использование пустого style занимает много памяти в процессоре. Вместо этого непосредственно используйте 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

Этот ответ может быть полезен для вас . Ширина диалогового окна 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
Suvarthee Chakravarti
@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;
}

пример ширины 90% и высоты 60%

0
Pablo Cegarra