我有一个主题为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:radius
和android:topLeftRadius
时,角会再次变为正方形。
有人知道我如何将半径仅应用于对话框的顶部吗?
我要做什么:
更新似乎,如果您的样式中有android:topRightRadius
,则顶部的圆角不起作用
答案 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();
结果将为“警告”对话框,仅将顶角四舍五入
答案 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>