Android的AlertDialog圆角:矩形看到下面的角落(Android AlertDialo

2019-08-17 05:26发布

我想要一个Dialog与圆角,但是当Dialog被认为是有它下面的一个矩形见过下面的角落,就像这样:

我建立了dialog使用自定义DialogFragment

public class MyDialogFragment extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();

    builder.setView(inflater.inflate(R.layout.playdialog, null));
    return builder.create();
}
}

对话框布局(playdialog)具有以下可绘制背景:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

    <solid
        android:color="#AAAAAAAA" />

    <stroke
        android:width="2dp"
        android:color="#FF000000" />

    <corners android:radius="20dp" />
</shape>

正如我所说的,我设置绘制背景:

android:background="@drawable/dialog_background"

我不希望这样的矩形待观察。 我该怎么做??

在该贴的用户有同样的问题。 我想使用的为他工作的解决方案,但它并没有为我工作。 我修改了DialogFragment是这样的:

public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();

    builder.setView(inflater.inflate(R.layout.playdialog, null));
    Dialog d = builder.create();
    d.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

    return d;
}

其结果是完全一样的。 我如何删除矩形?

谢谢!

Answer 1:

我感到很震惊,我发生了同样的问题,解决的办法是也有点怪异。 创建自己的自定义绘制的如见下文。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="@color/text_highlight" />

    <stroke
        android:width="5dp"
        android:color="@color/text_highlight" />

    <corners android:radius="12dp" />

    <stroke
        android:width="1dp"
        android:color="@android:color/transparent" />

</shape>

添加以下行到您的对话框:

 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

 // This is line that does all the magic
 dialog.getWindow().setBackgroundDrawableResource(                             
 R.drawable.dialog_rounded);


Answer 2:

尝试设置你的风格DialogFragmentTheme_Translucent.

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent);

这个对我有用。



Answer 3:

试试这个:

customDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);


Answer 4:

我设置透明背景在代码中的对话框。 试试这个:

@Override
public void onStart() {
    // TODO Auto-generated method stub
    super.onStart();
    getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0x00ffffff));
}


Answer 5:


getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

onCreateView()你MyDialogFragment的方法



文章来源: Android AlertDialog with rounded corners: rectangle seen below corners