java - 向警报对话框添加圆角

标签 java android android-alertdialog android-dialog material-components-android

我正在尝试向 AlertDialog 添加圆角,但我不明白形状文件的逻辑(这不起作用)。我在 AlertDialogRelativeLayout 中使用它作为背景,但它似乎被忽略了。这是形状文件:

<?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>

And this is the result 我错过了什么?

最佳答案

就用官方的Material AlertDialog包含在官方 Material Components for Android 库中。

new MaterialAlertDialogBuilder(context)
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("Ok", null)
            .show();

并使用主题

<item name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>

它遵循以下准则:

enter image description here

您可以 customize the shape您的组件使用 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>

关于java - 向警报对话框添加圆角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336692/

相关文章:

android - 标题未在 AlertDialog 上垂直居中

java - 使用 Nashorn 但不使用 javax.script

java - 具有 ON DUPLICATE KEY UPDATE 的插入查询的 Statement 类中的executeUpdate(String sql) 方法

Java在决定是否删除对象之前迭代map两次

java - 使用 Java 的远程 PC 名称和 IP

安卓工作室 : rendering fails for WearableListView

Android:如何正确设置 AlertDialog 中列表项的文本颜色

android - 在 Android fragment 中,在 onClick 事件后不播放声音

java - 从 List(而不是 ArrayList)填充自定义 ListView

android - AlertDialog 弹出两次