java - 向警报对话框添加圆角
问题描述
我正在尝试向 中添加圆角AlertDialog
,但我不了解形状文件的逻辑(不起作用)。我将它用作 中的背景RelativeLayout
,AlertDialog
但似乎它被忽略了。这是形状文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<corners android:radius="10dp" />
<padding android:left="10dp" android:right="10dp"/>
</shape>
这是警报对话框 xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/dialog_rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".UserList"
android:background="@drawable/shape_dialog">
<TextView
android:id="@+id/dialog_titile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Scegli un'operazione"
android:textAlignment="center"
android:padding="5dp"
android:textColor="@android:color/black"
android:background="#D3D3D3"
android:textSize="26dp" />
<TextView
android:id="@+id/dialog_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vuoi aprire o eliminare il test?"
android:textAlignment="center"
android:padding="15dp"
android:textSize="26dp"
android:layout_marginLeft="80dp"
android:background="@android:color/white"
android:textColor="@android:color/black"
android:layout_below="@id/dialog_titile" />
<Button
android:id="@+id/dialog_neutral_btn"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="Indietro"
android:layout_below="@id/dialog_tv"
android:textColor="@android:color/black"
android:background="@drawable/button_bg_3" />
<Button
android:id="@+id/dialog_positive_btn"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="Apri"
android:layout_alignBaseline="@id/dialog_neutral_btn"
android:layout_alignParentRight="true"
android:background="@drawable/button_bg_3"
android:layout_marginRight="20dp"/>
<Button
android:id="@+id/dialog_negative_btn"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="Elimina"
android:layout_toLeftOf="@id/dialog_positive_btn"
android:layout_alignBaseline="@id/dialog_neutral_btn"
android:background="@drawable/button_bg_3"
android:layout_marginRight="10dp" />
</RelativeLayout>
这就是结果 我错过了什么?
解决方案
只需使用官方 Material Components for Android 库中包含的官方Material AlertDialog 即可。
new MaterialAlertDialogBuilder(context)
.setTitle("Title")
.setMessage("Message")
.setPositiveButton("Ok", null)
.show();
并使用主题
<item name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>
它遵循以下准则:
您可以使用该属性自定义组件的形状。shapeAppearanceOverlay
就像是:
<!-- Alert Dialog -->
<style name="MyThemeOverlayAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.MyApp.Dialog.Rounded</item>
</style>
<style name="ShapeAppearanceOverlay.MyApp.Dialog.Rounded" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">8dp</item>
</style>
推荐阅读
- python - 为 pyspark 中的连续列值添加唯一标识符(序列号)
- regex - Perl:条件替换的正则表达式?
- php - Symfony 4:在没有嵌套 For 循环的情况下访问表单数据
- android - 自 Android Api 28 以来的 JSONException(字符串结果 = "")
- testing - 如何在小部件测试中等待 Future 方法?
- tensorflow - TensorFlow:数据集的多线程取消批处理
- python - 无法在 Python 中导入张量流
- python - 展平的数据透视表值应与列相邻
- php - 带有 docker 卷的 PHP 命令不起作用
- javascript - 尝试使用时刻库时间戳来理解 Javascript 中的地图