Android 带圆角的对话框 - 仍然显示没有圆角半径的背景
Android Dialog with rounded corners - still showing the background without corners radius
我想制作圆角对话框;但是在我完成之后,它看起来像这样>>
Java
AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
dialogBuilder.setView(R.layout.complain_dialog);
final AlertDialog alertDialog= dialogBuilder.create();
alertDialog.show();
XML
<?xml version="1.0" encoding="utf-8"?>
<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="100dp"
app:cardBackgroundColor="#FFF"
app:cardCornerRadius="15dp">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="15dp"
android:background="@color/black_overlay" />
</android.support.v7.widget.CardView>
问题是:为什么对话框仍然显示在没有圆角半径的背景中?
搜索此问题的解决方案后,我找到了其中一些解决方案>>
1- Android Dialog - Rounded Corners and Transparency
2- Android custom alert dialog with rounded corners
3- Android dialog background with corner radius has layered background
Java- 测试以上方案后
Dialog dialog= new Dialog(getContext());
dialog.setContentView(R.layout.complain_dialog);
dialog.getWindow().setBackgroundDrawable(new
ColorDrawable(Color.TRANSPARENT));
dialog.show();
测试解决方案后的结果
现在对话框根本不出现了!
任何人都可以给我解决这个问题的方法吗?提前谢谢你。
具有相同布局的 AlertDialog
解决方案(在 Kitkat
上测试)。
AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
dialogBuilder.setView(R.layout.temp);
final AlertDialog alertDialog= dialogBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
要显示 Dialog
相同,您需要设置对话框的宽度。 Here is a reference。否则它将采用 Content width 。在将内容视图设置为 Dialog
之前执行所有 dialog.getWindow()
操作。
在您的 java 代码文件中添加波纹管牵引线
customDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
customDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
另外请像下面这样更新您的布局
<?xml version="1.0" encoding="utf-8"?>
<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="100dp"
app:cardBackgroundColor="#FFF"
app:cardCornerRadius="15dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="15dp"
android:background="@color/black_overlay" />
</android.support.v7.widget.CardView>
在您尝试的代码中,
Dialog dialog= new Dialog(getContext());
dialog.setContentView(R.layout.complain_dialog);
dialog.getWindow().setBackgroundDrawable(new
ColorDrawable(Color.TRANSPARENT));
dialog.show();
使用方法 setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
基本上可以使视图透明。
您必须使用可绘制对象的形状和颜色创建一个 xml 文件,类似于 this post.
然后将其添加到布局中的根元素,因此如果您刚刚创建的 xml 可绘制文件(可绘制文件夹)名为 background.xml
,您的代码将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<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="100dp"
android:background="@drawable/background"
>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="15dp"
android:background="@color/black_overlay" />
</android.support.v7.widget.CardView>
然后正常创建对话框,不设置 java 中的样式,如最初:
AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
dialogBuilder.setView(R.layout.complain_dialog);
final AlertDialog alertDialog= dialogBuilder.create();
alertDialog.show()
希望对您有所帮助!
您可以在您的应用主题中添加以下代码,并为角半径制作可绘制资源文件
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:windowBackground">@drawable/custom_dilog</item>
<item name="android:textColor">#2c2f33</item>
<item name="android:textColorPrimary">#2c2f33</item>
<item name="android:background">#f7eeed</item>
</style>
对于圆角半径
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp" />
</shape>
我想制作圆角对话框;但是在我完成之后,它看起来像这样>>
Java
AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
dialogBuilder.setView(R.layout.complain_dialog);
final AlertDialog alertDialog= dialogBuilder.create();
alertDialog.show();
XML
<?xml version="1.0" encoding="utf-8"?>
<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="100dp"
app:cardBackgroundColor="#FFF"
app:cardCornerRadius="15dp">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="15dp"
android:background="@color/black_overlay" />
</android.support.v7.widget.CardView>
问题是:为什么对话框仍然显示在没有圆角半径的背景中?
搜索此问题的解决方案后,我找到了其中一些解决方案>>
1- Android Dialog - Rounded Corners and Transparency
2- Android custom alert dialog with rounded corners
3- Android dialog background with corner radius has layered background
Java- 测试以上方案后
Dialog dialog= new Dialog(getContext());
dialog.setContentView(R.layout.complain_dialog);
dialog.getWindow().setBackgroundDrawable(new
ColorDrawable(Color.TRANSPARENT));
dialog.show();
测试解决方案后的结果
现在对话框根本不出现了! 任何人都可以给我解决这个问题的方法吗?提前谢谢你。
具有相同布局的 AlertDialog
解决方案(在 Kitkat
上测试)。
AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
dialogBuilder.setView(R.layout.temp);
final AlertDialog alertDialog= dialogBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
要显示 Dialog
相同,您需要设置对话框的宽度。 Here is a reference。否则它将采用 Content width 。在将内容视图设置为 Dialog
之前执行所有 dialog.getWindow()
操作。
在您的 java 代码文件中添加波纹管牵引线
customDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
customDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
另外请像下面这样更新您的布局
<?xml version="1.0" encoding="utf-8"?>
<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="100dp"
app:cardBackgroundColor="#FFF"
app:cardCornerRadius="15dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="15dp"
android:background="@color/black_overlay" />
</android.support.v7.widget.CardView>
在您尝试的代码中,
Dialog dialog= new Dialog(getContext());
dialog.setContentView(R.layout.complain_dialog);
dialog.getWindow().setBackgroundDrawable(new
ColorDrawable(Color.TRANSPARENT));
dialog.show();
使用方法 setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
基本上可以使视图透明。
您必须使用可绘制对象的形状和颜色创建一个 xml 文件,类似于 this post.
然后将其添加到布局中的根元素,因此如果您刚刚创建的 xml 可绘制文件(可绘制文件夹)名为 background.xml
,您的代码将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<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="100dp"
android:background="@drawable/background"
>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="15dp"
android:background="@color/black_overlay" />
</android.support.v7.widget.CardView>
然后正常创建对话框,不设置 java 中的样式,如最初:
AlertDialog.Builder dialogBuilder= new AlertDialog.Builder(this);
dialogBuilder.setView(R.layout.complain_dialog);
final AlertDialog alertDialog= dialogBuilder.create();
alertDialog.show()
希望对您有所帮助!
您可以在您的应用主题中添加以下代码,并为角半径制作可绘制资源文件
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:windowBackground">@drawable/custom_dilog</item>
<item name="android:textColor">#2c2f33</item>
<item name="android:textColorPrimary">#2c2f33</item>
<item name="android:background">#f7eeed</item>
</style>
对于圆角半径
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp" />
</shape>