android - 使用深色或浅色模式更改自定义对话框形状颜色
问题描述
我在我的 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>
有人知道怎么做这个吗?任何答案将不胜感激
解决方案
推荐阅读
- performance - 如何在目标检测训练和评估中充分利用 tensorflow 2.x?
- android - getExternalStorageDirectory 在 Android 10 中已弃用
- c# - 如何创建通用类型演员 - 演员
带留言 在 Akka.Net 中? - c# - 循环列表并在不同时间访问不同属性的 C# 方法
- android - 无法在 listview 数组适配器中设置图像 URL
- c# - 在 Autofac 的上下文中:服务和组件之间有什么区别?
- docker - Docker 机器 vs Vagrant?
- haskell - 使用模板 Haskell 生成 TExp
- c# - C# - ASP NET.CORE 3.1 - 表中更新记录的问题
- javascript - JS click 事件监听器只工作一次,而不是预期的 if 语句