首页 > 解决方案 > 使用深色或浅色模式更改自定义对话框形状颜色

问题描述

我在我的 Android Studio 应用程序中为对话框使用自定义圆形背景,但遇到了问题。我已将形状的颜色指定为白色,但希望在暗模式下将其更改为黑色(因为文本会自动更改并且在白色背景下不可读)。我无法弄清楚如何做到这一点。

这是圆形背景xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/white" />
    <corners android:radius="25dp" />
</shape>

这是我创建对话框的方式:

var myDialog: Dialog
            myDialog = Dialog(this.requireContext())
            myDialog.setContentView(R.layout.popup_deposit);
            myDialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            myDialog.show()

R.layout.popup_deposit:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@drawable/rounded"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/textDepAmount"
        android:layout_width="228dp"
        android:layout_height="68dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:ems="100"
        android:hint="0"
        android:importantForAutofill="no"
        android:inputType="number"
        app:layout_constraintEnd_toStartOf="@+id/buttonDepAll"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4" />

    <Button
        android:id="@+id/buttonDepAll"
        android:layout_width="68dp"
        android:layout_height="68dp"
        android:layout_marginEnd="10dp"
        android:text="@string/all"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/textDepAmount"
        app:layout_constraintTop_toTopOf="@+id/textDepAmount" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="244dp"
        android:layout_height="49dp"
        android:text="@string/how_much_money_would_you_like_to_deposit"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/buttonBack"
        app:layout_constraintTop_toTopOf="@+id/buttonBack" />

    <Button
        android:id="@+id/buttonConfirmDeposit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="2dp"
        android:enabled="false"
        android:text="@string/deposit"
        app:cornerRadius="25dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textDepAmount" />

    <ImageButton
        android:id="@+id/buttonBack"
        android:layout_width="54dp"
        android:layout_height="50dp"
        android:layout_marginTop="16dp"
        android:contentDescription="@string/back"
        app:layout_constraintEnd_toStartOf="@+id/textView4"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_arrow_back_black_24dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

有人知道怎么做这个吗?任何答案将不胜感激

标签: androidxmlkotlindialogdarkmode

解决方案


推荐阅读