简体   繁体   中英

How to remove empty white space in the custom dialog android?

在此处输入图像描述 How to remove the empty space in the dialog. My code-

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center_horizontal"
    android:padding="10dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/quality_dialog_2x_radio_btn_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/quality_dialog_2x_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2X"
            android:textSize="16sp"
            android:textColor="#003FBC"
            android:padding="5dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/quality_dialog_1_5x_radio_btn_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/quality_dialog_1_5x_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1.5X"
            android:textSize="16sp"
            android:textColor="#003FBC"
            android:padding="5dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/quality_dialog_1_point_25_x_radio_btn_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/quality_dialog_1_point_25_x_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1.25X"
            android:textSize="16sp"
            android:textColor="#003FBC"
            android:padding="5dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/quality_dialog_normal_radio_btn_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/quality_dialog_normal_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Normal"
            android:textSize="16sp"
            android:textColor="#003FBC"
            android:padding="5dp"/>

    </LinearLayout>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/quality_dialog_normal_75x_radio_btn_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/quality_dialog_point_75x_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0.75X"
            android:textSize="16sp"
            android:textColor="#003FBC"
            android:padding="5dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/quality_dialog_5x_radio_btn_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/quality_dialog_point_5x_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0.5X"
            android:textSize="16sp"
            android:textColor="#003FBC"
            android:padding="5dp"/>

    </LinearLayout>

</LinearLayout>

My Java Code

  View alertLayout = View.inflate(this, R.layout.quality_dialog_layout, null);
        TextView quality2XView = alertLayout.findViewById(R.id.quality_dialog_2x_view_id);
        TextView quality1_5View = alertLayout.findViewById(R.id.quality_dialog_1_5x_view_id);
        TextView quality1_Point25View = alertLayout.findViewById(R.id.quality_dialog_1_point_25_x_view_id);
        TextView qualityNormalView = alertLayout.findViewById(R.id.quality_dialog_normal_view_id);
        quality_point75View = alertLayout.findViewById(R.id.quality_dialog_point_75x_view_id);
        quality_point5View = alertLayout.findViewById(R.id.quality_dialog_point_5x_view_id);
        quality2XRadioBtn = alertLayout.findViewById(R.id.quality_dialog_2x_radio_btn_view_id);
        quality1_5RadioBtn = alertLayout.findViewById(R.id.quality_dialog_1_5x_radio_btn_view_id);
        quality1_Point25RadioBtn = alertLayout.findViewById(R.id.quality_dialog_1_point_25_x_radio_btn_view_id);
        qualityNormalRadioBtn = alertLayout.findViewById(R.id.quality_dialog_normal_radio_btn_view_id);
        quality_point75RadioBtn = alertLayout.findViewById(R.id.quality_dialog_normal_75x_radio_btn_view_id);
        quality_point5RadioBtn = alertLayout.findViewById(R.id.quality_dialog_5x_radio_btn_view_id);

        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setView(alertLayout);
        alert.setCancelable(true);

        qualityAlertDialog = alert.create();
        qualityAlertDialog.show();

Suggestion 1:

In order to customize the AlertDialog theme you have to create a new theme for it, which is a bit complicated and quite hard as you have also to create proper images etc.

Regarding this option you can check this topic here

Suggestion 2:

Include the button in the xml:

<Button android:text="OK" 
style="?android:attr/borderlessButtonStyle" />

Suggestion 3:

Use the AlertDialog options and don't change the theme, this will add proper spacing in all options and follow the android theming so it will not look strange, but will not remove the spacing you mentioned:

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setSingleChoiceItems(R.array.your_array_options, null/* no item preselected*/,
                  new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               // handle the item selection here
           }
       }
    );
    alert.setCancelable(true);

    qualityAlertDialog = alert.create();
    qualityAlertDialog.show();

and the your_array_options will be in a file res/values/array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array
        name="your_array_options">
        <item>2X</item>
        <item>1.5X</item>
        <item>1.25X</item>
         ...
    </string-array>
</resources>

Suggestion 4:

In order to have full customized theme then do not use AlertDialog at all but DialogFragment :

public class MyDialogFragment extends DialogFragment {
// ...


 // Empty constructor required for DialogFragment
public MyDialogFragment() {}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.quality_dialog_layout, container);
    TextView quality2XView = alertLayout.findViewById(R.id.quality_dialog_2x_view_id);
    TextView quality1_5View = alertLayout.findViewById(R.id.quality_dialog_1_5x_view_id);
    TextView quality1_Point25View = alertLayout.findViewById(R.id.quality_dialog_1_point_25_x_view_id);
    TextView qualityNormalView = alertLayout.findViewById(R.id.quality_dialog_normal_view_id);
    quality_point75View = alertLayout.findViewById(R.id.quality_dialog_point_75x_view_id);
    quality_point5View = alertLayout.findViewById(R.id.quality_dialog_point_5x_view_id);
    quality2XRadioBtn = alertLayout.findViewById(R.id.quality_dialog_2x_radio_btn_view_id);
    quality1_5RadioBtn = alertLayout.findViewById(R.id.quality_dialog_1_5x_radio_btn_view_id);
    quality1_Point25RadioBtn = alertLayout.findViewById(R.id.quality_dialog_1_point_25_x_radio_btn_view_id);
    qualityNormalRadioBtn = alertLayout.findViewById(R.id.quality_dialog_normal_radio_btn_view_id);
    quality_point75RadioBtn = alertLayout.findViewById(R.id.quality_dialog_normal_75x_radio_btn_view_id);
    quality_point5RadioBtn = alertLayout.findViewById(R.id.quality_dialog_5x_radio_btn_view_id);

  // This will also require to add extra buttons in the xml!
  // getDialog().setTitle("If you want to change the title");

  return view;
}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM