对话框中的上圆角

时间:2019-01-03 21:59:45

标签: android android-layout

我有一个主题为Activity的{​​{1}},我正在尝试自定义对话框背景。我希望能够绕过对话框的各个角落,并且可以使用

Theme.AppCompat.Light.Dialog

<style name="MyTheme" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowBackground">@drawable/dialog_window_background</item> </style>

dialog_window_background

当我使用<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@color/white" android:insetTop="64dp" > <shape android:shape="rectangle"> <corners android:radius="6dp" /> <solid android:color="@android:color/white" /> </shape> </inset> 时,对话框的角会变圆,但是当我使用android:radiusandroid:topLeftRadius时,角会再次变为正方形。

有人知道我如何将半径仅应用于对话框的顶部吗?

我要做什么:

Top Rounded corners

更新似乎,如果您的样式中有android:topRightRadius,则顶部的圆角不起作用

3 个答案:

答案 0 :(得分:0)

在我的项目中,我使用了以下代码作为警报对话框的自定义背景。尝试此操作,可能会对您有所帮助

用下面的代码替换您的dialog_window_background.xml代码

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

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

<corners android:topLeftRadius="@dimen/d30sp"
    android:topRightRadius="@dimen/d30sp">
</corners>

</shape>

答案 1 :(得分:0)

您可以这样做,在drawable文件夹中添加dailog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- From: support/v7/appcompat/res/drawable/abc_dialog_material_background_light.xml -->
    <inset xmlns:android="http://schemas.android.com/apk/res/android"
           android:insetLeft="16dp"
           android:insetTop="16dp"
           android:insetRight="16dp"
           android:insetBottom="16dp">

        <shape android:shape="rectangle">
            <corners android:topRightRadius="10dp" android:topLeftRadius="10dp" android:bottomRightRadius="0dp" 
android:bottomLeftRadius="0dp" />
            <solid android:color="@color/colorPrimary" />
        </shape>

    </inset>

在styles.xml中添加它

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <!--buttons color-->
    <item name="colorAccent">#000000</item>
    <!--title and message color-->
    <item name="android:textColorPrimary">@android:color/white</item>
    <!--dialog background-->
    <item name="android:windowBackground">@drawable/dialog</item>
</style>

在活动中添加警报对话框

AlertDialog.Builder confirmation = new AlertDialog.Builder(this, R.style.MyDialogTheme);
    confirmation.setTitle("Title");
    confirmation.setMessage("Are you sure.?").setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {

        }
    })
            .setNegativeButton("No", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {

                }
            });
    confirmation.show();

结果将为“警告”对话框,仅将顶角四舍五入

output

答案 2 :(得分:0)

尝试以下形状的可绘制文件代码

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
    android:bottomLeftRadius="0dp"
    android:bottomRightRadius="0dp"
    android:topLeftRadius="40dp"
    android:topRightRadius="40dp"/>
<solid
    android:color="@color/colorWhite"/>

</shape>