我正在尝试做的事情: 我正在尝试在带有圆角的 android 中创建一个自定义对话框。
发生了什么: 我可以制作自定义对话框,但它没有圆角。我尝试添加一个选择器,但仍然无法实现圆角。
以下是我的相同代码:
Java代码:
private void launchDismissDlg() { dialog = new Dialog(getActivity(), android.R.style.Theme_Dialog); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dlg_dismiss); dialog.setCanceledOnTouchOutside(true); Button btnReopenId = (Button) dialog.findViewById(R.id.btnReopenId); Button btnCancelId = (Button) dialog.findViewById(R.id.btnCancelId); btnReopenId.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); btnCancelId.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); dialog.setCanceledOnTouchOutside(false); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); dialog.show(); }
xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" > <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:gravity="center" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text=""I WOULD LIKE TO DISMISS THE VENDOR"" android:textColor="@color/col_dlg_blue_light" android:textSize="14sp" android:textStyle="bold" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="BECAUSE" android:textColor="@android:color/black" android:textStyle="bold" /> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/btnReopenId" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@color/col_dlg_green_light" android:text="REOPEN" android:padding="5dp" android:textSize="14sp" android:textColor="@android:color/white" android:textStyle="bold" /> <Button android:id="@+id/btnCancelId" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@color/col_dlg_pink_light" android:text="CANCEL" android:padding="5dp" android:textSize="14sp" android:textColor="@android:color/white" android:textStyle="bold" /> </TableRow> </TableLayout> </LinearLayout>
在drawable中创建一个XML文件,比如dialog_bg.xml:
dialog_bg.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white"/> <corners android:radius="30dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape>
将其设置为布局 XML 中的背景:
android:background="@drawable/dialog_bg"
将对话框的根视图的背景设置为透明,因为 Android 将您的对话框布局放在根视图中,该根视图隐藏了自定义布局中的角。
爪哇:
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
科特林:
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))