当前位置: 首页 > 知识库问答 >
问题:

带有圆角的Android对话框-仍然显示没有圆角半径的背景

欧阳君浩
2023-03-14

我想制作圆角对话框;但是在我完成后,它出现了这样的

爪哇

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对话框-圆角和透明度

2-带有圆角的Android自定义警报对话框

3-带圆角的Android对话框背景有分层背景

Java-测试上述解决方案后

Dialog dialog= new Dialog(getContext());
dialog.setContentView(R.layout.complain_dialog);
dialog.getWindow().setBackgroundDrawable(new 
ColorDrawable(Color.TRANSPARENT)); 
dialog.show();

测试解决方案后的结果

现在对话框根本没有出现!任何人都可以给我解决这个问题吗?提前感谢您。

共有3个答案

宗政唯
2023-03-14

在您的java代码文件中添加Bellow tow行

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>
百里飞捷
2023-03-14

在您尝试的代码中,

Dialog dialog= new Dialog(getContext());
dialog.setContentView(R.layout.complain_dialog);
dialog.getWindow().setBackgroundDrawable(new 
ColorDrawable(Color.TRANSPARENT)); 
dialog.show();

使用设置了可背景绘制的方法(新的可绘制颜色(彩色透明)); 您基本上使该视图透明。

您必须使用可绘制对象的形状和颜色创建一个xml文件,就像这篇文章中的内容一样。

然后将其添加到布局中的根元素中,因此如果您刚刚创建的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()

希望有帮助!

王高超
2023-03-14

具有相同布局的< code>AlertDialog的解决方案(在< code>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();

要将对话框显示为相同,您需要设置对话框的宽度。这是一个参考。否则,它将采用 内容宽度 。在将“内容视图”设置为“对话框”之前,请执行所有对话框.getWindow() 操作。

 类似资料:
  • 问题内容: 我试图通过使用Spannable String来更改我的字符串,使其中间带有数字的徽章。我可以通过设置BackGroundColorSpan突出显示适当的字母/数字,但是需要一些帮助使其更加漂亮。我希望圆角周围有一些填充物。 本文确实与我要执行的操作非常接近:AndroidSpannableString将背景设置为文本的一部分 由于资源与应用程序的交互方式,我确实需要将资源保留为Tex

  • 我试图使一个自定义的android对话框与圆角。我目前的尝试给了我这个结果。 如你所见,角是圆的,但它留下白色的角仍然完好无损。 下面是我放在drawable文件夹中的xml,以创建带有红色边框和圆角的蓝色对话框。

  • 下面的屏幕截图显示了对1的测试。我想使矩形外的组件的角完全透明 但是,当父面板上有红色背景(或任何非标准颜色)时,您可以看到这种方法的缺点。拐角默认为默认面板颜色(最容易在中看到)。 最终,我希望它能用于父容器中的非标准颜色,但它的部分灵感来自于我需要做什么才能用渐变绘制复制此组件? 有人知道如何让这些角落透明吗? 而是为JTextArea的内部填充设计的,带有背景图像(

  • 我一直在努力使我的警告对话框圆角,但不知何故,我不能。我试过了,但失败了。我试着关注这个博客http://blog.stylingandroid.com/archives/271并以此为基础制作了我的风格。 顺便说一句,现在补充我的问题。我的一些新发现。上面链接中的代码在2.3.3(GB)上运行良好,但在ICS中根本不起作用。一些改变使代码中断。 我想避免创建9个补丁图像,因此我使用形状。9补丁图

  • 我正在膨胀一个自定义布局与CardView内的布局。圆角显示如预期,但我也得到灰色背景后面的角落。 代码很简单,使用带有角半径和背景颜色的CardView。我试过设置透明背景,但不起作用。但是,如果我设置了另一种不透明颜色,则显示在角落中。 代码已附上。 结果:

  • 本文向大家介绍Android中TextView显示圆圈背景或设置圆角的方法,包括了Android中TextView显示圆圈背景或设置圆角的方法的使用技巧和注意事项,需要的朋友参考一下 前言 在我们学习android这么久,而且使用TextView那么长时间,我们一直没有用过给TextView添加背景,或者是给TextView添加添加边框,以及怎么样设置TextView的形状。今天在写代码的时候就用