按钮文本颜色的单独 day/night 选择器
Separate day/night selector for button text color
我为按钮文本颜色创建了一个自定义选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/textColorPrimary" android:state_enabled="true" />
<item android:alpha="0.38" android:color="?android:attr/textColorPrimary" />
</selector>
不过,我想在夜间主题中使用 ?android:attr/textColorPrimary
颜色,在白天主题中使用 ?android:attr/colorPrimary
。我怎样才能做到这一点?
创建文件夹 drawable-night
并将 night-variant 放入其中,在公共 drawable
文件夹
中保留未修改的文件
每个属性在 day/night 模式设置中都有其互补的浅色和深色。您可以在 theme.xml
中为亮模式和暗模式创建一个新项目并使用它。
在 res
目录中创建一个 values-night
文件夹并在其中创建一个 themes.xml
这将包含您的夜间主题。 values
文件夹中的 themes.xml
包含您的日主题。
例如说:这是您在 values
文件夹中的 theme.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.MyApp" parent="Base.Theme.MyApp">
<item name="buttonColor">@color/light_base_1</item>
</resources>
这是您在 values-night
文件夹中的 theme.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.MyApp" parent="Base.Theme.MyApp">
<item name="buttonColor">@color/dark_base_1</item>
</resources>
在 attrs.xml
文件中创建一个属性
<attr name="buttonColor" format="color" />
然后你可以在选择器中使用这个新属性
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/textColorPrimary" android:state_enabled="true" />
<item android:alpha="0.38" android:color="?attr/buttonColor" />
我为按钮文本颜色创建了一个自定义选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/textColorPrimary" android:state_enabled="true" />
<item android:alpha="0.38" android:color="?android:attr/textColorPrimary" />
</selector>
不过,我想在夜间主题中使用 ?android:attr/textColorPrimary
颜色,在白天主题中使用 ?android:attr/colorPrimary
。我怎样才能做到这一点?
创建文件夹 drawable-night
并将 night-variant 放入其中,在公共 drawable
文件夹
每个属性在 day/night 模式设置中都有其互补的浅色和深色。您可以在 theme.xml
中为亮模式和暗模式创建一个新项目并使用它。
在 res
目录中创建一个 values-night
文件夹并在其中创建一个 themes.xml
这将包含您的夜间主题。 values
文件夹中的 themes.xml
包含您的日主题。
例如说:这是您在 values
文件夹中的 theme.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.MyApp" parent="Base.Theme.MyApp">
<item name="buttonColor">@color/light_base_1</item>
</resources>
这是您在 values-night
文件夹中的 theme.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.MyApp" parent="Base.Theme.MyApp">
<item name="buttonColor">@color/dark_base_1</item>
</resources>
在 attrs.xml
文件中创建一个属性
<attr name="buttonColor" format="color" />
然后你可以在选择器中使用这个新属性
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/textColorPrimary" android:state_enabled="true" />
<item android:alpha="0.38" android:color="?attr/buttonColor" />