繁体   English   中英

如何删除自定义对话框 android 中的空白区域?

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

在此处输入图像描述 如何删除对话框中的空白区域。 我的代码-

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

我的 Java 代码

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

建议一:

为了自定义 AlertDialog 主题,您必须为其创建一个新主题,这有点复杂且相当困难,因为您还必须创建适当的图像等。

关于此选项,您可以在此处查看此主题

建议二:

在 xml 中包含按钮:

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

建议三:

使用 AlertDialog 选项并且不要更改主题,这将在所有选项中添加适当的间距并遵循 android 主题,因此它看起来不会奇怪,但不会删除您提到的间距:

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

并且 your_array_options 将位于文件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>

建议四:

为了获得完整的自定义主题,请不要使用AlertDialog而是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;
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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