更改为深色主题时微调文本不可见
Spinner Text not visible when changing to dark theme
当我将主题从浅色模式更改为深色模式时,微调器文本在默认情况下不可见,或者当一个值被 select 编辑时。我尝试将文本颜色设置为 android:textColor="?android:textColorPrimary"
但这没有用。我也试过将文本颜色设置为黑色,但结果仍然相同。该应用程序在轻模式下运行良好。
以下是一些屏幕截图:
Spinner in dark mode:
Spinner in light mode
当我 select 任何选项“Sin”或“Cos”形成微调器时,微调器值在代码中得到 selected 但文本不可见,它保持为空白色 space.
这是我的 xml activity 代码:
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/backgroundDark"
tools:context=".InputActivity">
<ListView
android:id="@+id/inputListView"
android:layout_width="match_parent"
android:layout_height="310dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:background="@color/backgroundDarkSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/inputControls" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/inputControls"
android:layout_width="match_parent"
android:layout_height="370dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:background="@color/backgroundDarkSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/amplitudeEditText"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="@color/white"
android:ems="10"
android:inputType="numberDecimal"
android:textColor="@color/backgroundDark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/amplitudeTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:ems="10"
android:text="Amplitude"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/phaseTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Phase"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/amplitudeTextView" />
<EditText
android:id="@+id/phaseEditText"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:ems="10"
android:inputType="numberDecimal"
android:textColor="@color/backgroundDark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/amplitudeEditText" />
<TextView
android:id="@+id/waveformTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Waveform"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/phaseTextView" />
<Spinner
android:id="@+id/waveformSpinner"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/phaseEditText" />
<TextView
android:id="@+id/colorTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Color"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/waveformTextView" />
<Spinner
android:id="@+id/colorSpinner"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/waveformSpinner" />
<Button
android:id="@+id/addInputButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="125dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="125dp"
android:backgroundTint="@color/primary"
android:text="Add Input"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.117"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/nameTextView" />
<TextView
android:id="@+id/nameTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Name"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/colorTextView" />
<EditText
android:id="@+id/nameEditText"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:ems="10"
android:inputType="text"
android:textColor="@android:color/primary_text_light"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/colorSpinner" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
由于从浅色模式切换到深色模式时我的主题没有任何变化,所以我尝试为我的 themes.xml 深色主题和浅色主题设置相同的代码,希望这样可以防止这种情况发生问题。
themes.xml代码:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.CanvasPractice" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryVariant">@color/backgroundDark</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/secondary</item>
<item name="colorSecondaryVariant">@color/secondary</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.CanvasPractice.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
PS:第一次在这里提问,如有错误请多多包涵
您在代码中将 Spinner
的白色背景设置为 android:background="#FFFFFF"
。明暗模式不会切换此颜色,因为它是固定颜色,不依赖于主题。如果需要,您应该使用支持 Spinner 背景的样式,这可以根据对明暗模式的需要而有所不同。
当我将主题从浅色模式更改为深色模式时,微调器文本在默认情况下不可见,或者当一个值被 select 编辑时。我尝试将文本颜色设置为 android:textColor="?android:textColorPrimary"
但这没有用。我也试过将文本颜色设置为黑色,但结果仍然相同。该应用程序在轻模式下运行良好。
以下是一些屏幕截图: Spinner in dark mode:
Spinner in light mode
当我 select 任何选项“Sin”或“Cos”形成微调器时,微调器值在代码中得到 selected 但文本不可见,它保持为空白色 space.
这是我的 xml activity 代码:
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/backgroundDark"
tools:context=".InputActivity">
<ListView
android:id="@+id/inputListView"
android:layout_width="match_parent"
android:layout_height="310dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:background="@color/backgroundDarkSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/inputControls" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/inputControls"
android:layout_width="match_parent"
android:layout_height="370dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:background="@color/backgroundDarkSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/amplitudeEditText"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="@color/white"
android:ems="10"
android:inputType="numberDecimal"
android:textColor="@color/backgroundDark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/amplitudeTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:ems="10"
android:text="Amplitude"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/phaseTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Phase"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/amplitudeTextView" />
<EditText
android:id="@+id/phaseEditText"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:ems="10"
android:inputType="numberDecimal"
android:textColor="@color/backgroundDark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/amplitudeEditText" />
<TextView
android:id="@+id/waveformTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Waveform"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/phaseTextView" />
<Spinner
android:id="@+id/waveformSpinner"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/phaseEditText" />
<TextView
android:id="@+id/colorTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Color"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/waveformTextView" />
<Spinner
android:id="@+id/colorSpinner"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/waveformSpinner" />
<Button
android:id="@+id/addInputButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="125dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="125dp"
android:backgroundTint="@color/primary"
android:text="Add Input"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.117"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/nameTextView" />
<TextView
android:id="@+id/nameTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:text="Name"
android:textColor="@android:color/primary_text_dark"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/colorTextView" />
<EditText
android:id="@+id/nameEditText"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="40dp"
android:background="#FFFFFF"
android:ems="10"
android:inputType="text"
android:textColor="@android:color/primary_text_light"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/colorSpinner" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
由于从浅色模式切换到深色模式时我的主题没有任何变化,所以我尝试为我的 themes.xml 深色主题和浅色主题设置相同的代码,希望这样可以防止这种情况发生问题。
themes.xml代码:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.CanvasPractice" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryVariant">@color/backgroundDark</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/secondary</item>
<item name="colorSecondaryVariant">@color/secondary</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.CanvasPractice.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
PS:第一次在这里提问,如有错误请多多包涵
您在代码中将 Spinner
的白色背景设置为 android:background="#FFFFFF"
。明暗模式不会切换此颜色,因为它是固定颜色,不依赖于主题。如果需要,您应该使用支持 Spinner 背景的样式,这可以根据对明暗模式的需要而有所不同。