【问题标题】:Spinner Text not visible when changing to dark theme更改为深色主题时,微调器文本不可见
【发布时间】:2021-05-12 17:10:16
【问题描述】:

当我将主题从浅色模式更改为深色模式时,默认情况下或选择某个值时,微调器文本不可见。我尝试将文本颜色设置为android:textColor="?android:textColorPrimary",但这不起作用。我也尝试将文本颜色设置为黑色,但结果仍然相同。该应用在光照模式下运行良好。

以下是一些截图: Spinner in dark mode:

Spinner in light mode

当我从微调器中选择任何选项“Sin”或“Cos”时,微调器值在代码中被选中,但文本不可见,它仍然是空白区域。

这是我的活动 xml 代码:

<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:这是我第一次在这里提问,如有错误请见谅。

【问题讨论】:

  • 设置微调器的文本颜色不起作用,因为所选项目是单独的视图而不是微调器本身。要获得单独的视图,请查看以下答案:stackoverflow.com/a/15380215

标签: java android xml android-studio android-dark-theme


【解决方案1】:

您在代码中将Spinner 的白色背景设置为android:background="#FFFFFF"。明暗模式不会切换此颜色,因为它是固定颜色,不取决于主题。如果需要,您应该使用支持 Spinner 背景的样式,该样式可以根据明暗模式的需要而有所不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多