首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何正确地主题活动,并确定哪些属性是错误的?

如何正确地主题活动,并确定哪些属性是错误的?
EN

Stack Overflow用户
提问于 2018-11-27 01:28:14
回答 2查看 1K关注 0票数 0

我正在为我的应用程序支持黑暗/夜模式,所以我把我的活动改为AppCompatActivity和android:主题变成了一个扩展"Theme.AppCompat.DayNight“的清晰的自定义主题,但我发现这里和那里都有很多变化。

我不知道什么是正确的方式来修复他们,然后支持黑暗模式。

  1. 如何找出哪些属性正在影响,例如导航栏颜色、导航图标颜色、上/后图标颜色、动作栏背景色和活动背景色?(目前,我只是尝试&错误所有在"android“和”appcompat“中定义的属性)
  2. 我正在做的活动是一个设置活动,也就是AppCompatActivity中的AppCompatActivity,每个首选项都是从一个自定义布局中膨胀出来的,下面是图标的ImageView:

正如您所看到的,我没有在上面设置任何颜色,但是图标的颜色仍然改变了。我应该如何找出原因(并解决它)?

PS。这个问题更多的是关于“主题活动的‘正确’方式是什么?”“如何知道哪些属性可以作为主题?”

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-11-27 01:58:07

应用程序战斗属性的列表可以看到这里。在过去,我试图做一些类似的事情,但我不一定要凌驾其中的每一个。我在屏幕上看我想要改变的东西,而只是编辑它。

票数 0
EN

Stack Overflow用户

发布于 2018-11-27 02:00:19

您必须在res文件夹中的样式文件中定义主题。下面是主题样式的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<resources>

<style name="AppThemeLight" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="titleColor">@color/colorPrimary</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccentLight</item>
    <item name="secondBackground">#c2c2c2</item>
    <item name="roundButton">@drawable/round_button_light</item>
    <item name="alertDialogTheme">@style/AppThemeDialogLight</item>
    <item name="android:itemBackground">#ffffff</item>
    <item name="android:textColor">#000000</item>

</style>

<style name="AppThemeDialogLight" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">@color/colorAccentLight</item>
</style>

<style name="AppThemeLight.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:itemBackground">#ffffff</item>
    <item name="android:textColor">#000000</item>
</style>

<style name="AppThemeLight.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppThemeLight.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

<style name="AppThemeDark" parent="Theme.AppCompat">
    <item name="titleColor">@android:color/primary_text_dark</item>
    <item name="colorPrimaryDark">@color/primary_dark_material_dark</item>
    <item name="colorPrimary">@color/primary_material_dark</item>
    <item name="colorAccent">@color/colorAccentDark</item>
    <item name="secondBackground">#151515</item>
    <item name="roundButton">@drawable/round_button_dark</item>
    <item name="alertDialogTheme">@style/AppThemeDialogDark</item>
    <item name="android:itemBackground">@color/item_theme_dark</item>
    <item name="android:textColor">#ffffff</item>
</style>

<style name="AppThemeDialogDark" parent="@style/Theme.AppCompat.Dialog.Alert">
    <item name="colorAccent">@color/colorAccentDark</item>
</style>

<style name="AppThemeDark.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:itemBackground">@color/item_theme_dark</item>
    <item name="android:textColor">#ffffff</item>
</style>

color.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#00897B</color>
    <color name="white">#fff</color>
    <color name="colorA">#D81B60</color>
    <color name="secondBackground">#33333333</color>
    <color name="colorAccentLight">#FF4081</color>
    <color name="colorAccentDark">#a4a4a4</color>
    <color name="dark_blue">#0d47a1</color>
    <color name="light_theme_dark_contextual_bar_background">@color/dark_blue</color>
    <color name="dark_theme_elapsed_time_paused_color">#4cffffff</color>
    <color name="tooltip_background_dark">#e6616161</color>
    <color name="tooltip_background_light">#e6ffffff</color>
    <color name="dark_theme_color_primary_dark">#040404</color>
    <color name="tab_background_selected_theme_dark">#232323</color>
    <color name="tab_background_unselected_theme_dark">#232323</color>
    <color name="item_theme_dark">#363636</color>
</resources>

在活动的onCreateMethod中,将主题设置为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setAppTheme(getTheme(this, R.style.AppThemeLight_NoActionBar, R.style.AppThemeDark_NoActionBar));
    setContentView(R.layout.activity_main);
}


public static int getTheme(Context context, int light, int dark) {
        final SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context);
        String theme = shared.getString(PREFERENCE_THEME, "");  // upon selecting the theme from options just put the related string in the shared prefs. 
        if (theme.equals("Theme_Dark")) {
            return dark;
        } else {
            return light;
        }
    }

和styles.xml v21

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<resources>
<style name="AppThemeLight.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
<style name="AppThemeDark.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:itemBackground">@color/item_theme_dark</item>
    <item name="android:textColor">#ffffff</item>

</style>

基本上,主题样式内部的这两行进行了大量的更改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <item name="android:itemBackground">#ffffff</item>
    <item name="android:textColor">#000000</item>

这两行将使每个视图的背景变为白色,每一个文本颜色都将更改为黑色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53496452

复制
相关文章
numpy 插值
第二个参数是需要pad的值,参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值;
全栈程序员站长
2022/09/22
6700
numpy 插值
用Pso思想求解y = x^2的最小值
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
算法与编程之美
2023/01/03
4970
Java真的只有值传递?
值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
一觉睡到小时候
2019/07/02
7050
Java真的只有值传递?
Echarts设置y轴值间隔
需求:如图,y轴之间的距离太小,这样就太过于拥挤了,现在要修改echarts里面的属性,设置y轴值间隔让图表看上去舒服一些。
王小婷
2019/03/22
9.2K0
Echarts设置y轴值间隔
java漫谈-Java只有值传递
文中用遥控器(引用)操作电视(对象)为例形象的说明了该引用名词的含义,同时在对定义的“引用”该名词的注释中提到:
WindCoder
2020/01/24
6470
为什么Java只有值传递
值传递: 调用函数时,将实参复制一份传给函数,函数中修改参数时不会影响实参 引用传递:调用函数时,将实参的地址传给函数,函数中修改参数会影响实参。 判断是值传递还是引用传递的标准,和传递参数的类型是没有关系的。
Qwe7
2022/04/01
4720
Numpy库之swapaxes(a,x,y)方法理解
ndarray对象的操作函数之np.swapaxes(a,x,y) 等价于 a.swapaxes(x,y)
狼啸风云
2021/03/03
1.6K0
Numpy中找出array中最大值所对应的行和列
Python特别灵活,肯定方法不止一种,这里介绍一种我觉得比较简单的方法。 如下图,使用x == np.max(x) 获得一个掩模矩阵,然后使用where方法即可返回最大值对应的行和列。 where返回一个长度为2的元组,第一个元素保存的是行号,第二个元素保存的是列号。
卡尔曼和玻尔兹曼谁曼
2019/01/22
6.5K0
Numpy中找出array中最大值所对应的行和列
求X值问题
已知有整数x,x + 100为一个平方数、x + 168也是一个平方数、请写出计算程序求出x的所有可能?
江涛学编程
2020/08/26
4660
Java中真的只有值传递么?
关于这个问题应该是存在争议的。根据测试出来的结果和我们自己的经验,以及口口相传或是上学时老师讲的,我们认为是第一种。但第二种说法的呼声也很高,渐渐地我们也认为第2中才是对的。那么下面我们就来分析一下这个问题。
编程大道
2020/02/11
1.1K0
Java 基础概念·Java 只有值传递
当我们调用一个有参函数的时候,会把实际参数传递给形式参数。在程序语言中,这个传递过程中有两种情况,即值传递和引用传递。
数媒派
2022/12/01
4260
Scipy和Numpy的插值对比
插值法在图像处理和信号处理、科学计算等领域中是非常常用的一项技术。不同的插值函数,可以根据给定的数据点构造出来一系列的分段函数。这一点有别于函数拟合,函数拟合一般是指用一个给定形式的连续函数,来使得给定的离散数据点距离函数曲线的总垂直距离最短,不一定会经过所有的函数点。比如在二维坐标系内,用一条直线去拟合一个平面三角形所对应的三个顶点,那么至少有一个顶点是不会落在拟合出来的直线上的。而根据插值法所得到的结果,一定是经过所有给定的离散点的。本文针对scipy和numpy这两个python库的插值算法接口,来看下两者的不同实现方案。
DechinPhy
2022/05/09
3.6K0
Scipy和Numpy的插值对比
[L5]快速掌握Series~过滤Series的值和缺失值的处理
由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这系列将介绍Pandas模块中的Series,本文主要介绍:
触摸壹缕阳光
2020/05/13
10.4K0
为什么说Java中只有值传递?
相信我,当你正在看这篇文章的时,说明你对值传递和引用传递的理解大概率是错误的。如果你理解的是正确的,你应该也不会来看这篇文章。
诺浅
2020/08/19
5600
【说站】python如何过滤列表中的唯一值
1、使用collections.Counter函数对列表进行计数,并通过列表推导式过滤出非唯一值,过滤出计数大于1的值。
很酷的站长
2022/11/24
4.8K0
【说站】python如何过滤列表中的唯一值
numpy笔记_python numpy array
ndarray的可以对整块数据执行数学运算,语法与标量元素的元素的运算一致。 如:
全栈程序员站长
2022/09/20
6250
cssjshtml vue.js if过滤 if多个值
通过表单内每行根据status的数值,控制是否显示button。过滤数值的是一个数组列表。
葫芦
2019/08/19
3.4K0
[答疑]解析美女出的一道状态机题(x、y和z值)
状态机如下图所示。如果对象创建之后,事件e2、e1、e3、e4、e1和e5按给定顺序发生,请问,事件发生结束后,变量x、y和z值分别是_______________________。
用户6288414
2019/09/23
7920
[答疑]解析美女出的一道状态机题(x、y和z值)
numpy.array
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
狼啸风云
2019/11/28
5590
excel挑选出每一行的最大值或最小值
Evacloud 撰写论文结果比较的时候需要跳出各个算例的最好的算法和最坏的算法,这时候我们就需要将每一行中的最大值或者最小值挑选出来。 框选出需要标注的区域文本,此处是A1:J100,点击开始选项卡
演化计算与人工智能
2021/04/02
3.6K0
excel挑选出每一行的最大值或最小值

相似问题

亮度问题Ubuntu 18.04 LTS

90

GNOME闪回中Qt Creator的AppMenu

20

在Ubuntu 18.04 LTS上运行Gnome盒

10

从终端修改ubuntu 20.04 LTS中的gnome闪回面板

20

无法从Ubuntu GNOME 16.04.4更新到18.04 LTS

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文