Android get full width for custom Dialog

后端 未结 16 626
慢半拍i
慢半拍i 2020-12-02 15:19

in my application my created custom dialog dont have full height and i can not change and customize that.for example see this screen shot:

相关标签:
16条回答
  • 2020-12-02 15:50

    Add code when you want to open dialog

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

    dialog's 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>
    

    Add Animations in res folder: 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>
    
    0 讨论(0)
  • 2020-12-02 15:50

    You can programatically set a dialog width and height.

    dialog = new Dialog(this);
    dialog.setContentView(R.layout.dialog_create_subcategory);
    dialog.getWindow().setLayout(width, height);
    
    0 讨论(0)
  • 2020-12-02 15:51

    Two ways this can be done, first one in style.xml and second in code:

    1. Add as below in style.xml, alter the value(currently 90%) to meet your needs.
    <style name="Theme_Dialog" parent="android:Theme.Holo.Dialog">
        <item name="android:windowMinWidthMajor">90%</item>
        <item name="android:windowMinWidthMinor">90%</item>
    </style>
    
    1. Add setlayout to 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();
    
    0 讨论(0)
  • 2020-12-02 15:51

    Using com.google.android.material.dialog.MaterialAlertDialogBuilder makes everything fun. Here my code

    MaterialAlertDialogBuilder(requireContext()).apply {
            setView(layoutInflater.inflate(R.layout.filter_view, null))
            show()
        }
    

    And Result

    0 讨论(0)
  • 2020-12-02 15:52

    You need to get the current Window and set it's LayoutParams like so:

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

    Alternative(if above solution does't works)

    In case above code not works well you can use a workaround

    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);
    
    0 讨论(0)
  • 2020-12-02 15:54

    Use Relative Layout instead of Linear layout to get full width of Custom Dialog.

    0 讨论(0)
提交回复
热议问题