主题是应用于整个Android应用程序或Activity的样式,而不是单个View。将样式应用为主题时,“活动”或“应用程序”中的每个“视图”都将应用它支持的每个样式属性。
如何通过 R.attr.colorPrimary 访问主题颜色属性
我正在使用 Android Studio Electric Eel,我开始了一个新的“基本活动”项目。它带有明暗主题,/res/values/theme.xml /res/values-night/theme.xml 我正在使用 Android Studio Electric Eel,我开始了一个新的“基本活动”项目。它带有明暗主题,/res/values/theme.xml /res/values-night/theme.xml <resources xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <item name="colorPrimary">@color/md_theme_light_primary</item> </style> </resources> 我明白我需要使用这个代码: val typedValue = TypedValue() view.context.theme.resolveAttribute(R.attr.colorPrimary, typedValue, true) val colorPrimary = typedValue.data 这几乎行得通。 无论出于何种原因,R.attr.colorPrimary 都不会解决我本地项目的默认 com.example.project.R。当我输入R.attr.colorPrimary时,它只会自动完成解析为com.google.android.material.R.attr.colorPrimary(它也可以解析为一些androidx组件,这也有效) 当我使用它时,它确实有效,并且它确实使用了从我的 theme.xml 指向的我的 colors.xml。我只是想了解为什么它不会简单地从我的 theme.xml 中解析。在我在网上找到的所有示例中,它都被命名为 styles.xml,所以我将其重命名为那个,一切都一样,没有变化。 当我按住 ctrl 并单击已解析的颜色时,它会将我带到缓存文件中... ransformed ppcompat-1.6.1 es alues alues.xml 那是<attr format="color" name="colorPrimary"/> 如果我 ctrl-click parent="Theme.MaterialComponents.DayNight.DarkActionBar" 它会带我到一个缓存 ... ransformed\material-1.8.0 es 值 alues.xml 我只是想明白为什么。看来我的颜色仍然覆盖默认颜色,并且它可以使用com.google.android.material.R。在 xml 布局中,?attr/colorPrimary 工作得很好。但是我看的任何地方都没有说在以编程方式解决它时需要这条路径。 这几乎行得通。无论出于何种原因,R.attr.colorPrimary 都不会解析我本地项目的默认 com.example.project.R。 那是因为 colorPrimary 不是您在本地项目中定义的属性。这是材料库中定义的属性。 当我使用它时,它确实有效,并且它确实使用了从我的 theme.xml 指向的我的 colors.xml。我只是想了解为什么它不会简单地从我的 theme.xml 中解析。 属性不会“从 [your] theme.xml 解析”。属性在 attrs.xml 文件中定义,就像颜色或尺寸一样。你没有定义一个,因此它不存在。 当你在你的themes.xml文件中使用它时: <resources xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <item name="colorPrimary">@color/md_theme_light_primary</item> </style> </resources> 您正在 extending 现有的材料主题(parent 属性)并设置已在该主题中定义的 colorPrimary 属性。您没有声明自己的 colorPrimary 属性。如果您没有将 parent 属性设置为具有 colorPrimary 的主题,则会出现错误。 在我在网上找到的所有示例中,它都被命名为 styles.xml,所以我将其重命名为那个,一切都一样,没有变化。 对 - 文件名无关紧要。 当我按住 ctrl 并单击已解析的颜色时,它会将我带到缓存文件中... ransformed ppcompat-1.6.1 es alues alues.xml 那是 如果我 ctrl-click the parent="Theme.MaterialComponents.DayNight.DarkActionBar" 它会带我到缓存 ... ransformed\material-1.8.0 es 值 alues.xml 通过 XML 的 Android 主题是一个复杂的嵌套覆盖网络。 colorPrimary 作为第一个“app compat”库中的 Material design 引入的概念。此后,它通过专用材料库进行了更新和增强,这些材料库扩展了原始材料并重新定义了值以遵守最新的材料指南。 我只是想明白为什么。看来我的颜色仍然会覆盖默认颜色,并且它可以使用 com.google.android.material.R 工作。在 xml 布局中 ?attr/colorPrimary 工作得很好。但是我看的任何地方都没有说在以编程方式解决它时需要这条路径。 总而言之,colorPrimary 是由 appcompat 和材料设计库定义的主题属性,因此它存在于它们的包中。 在 XML 中,?attr/colorPrimary 引用当前主题,在您的情况下将是“Theme.Example”,您已声明将 colorPrimary 设置为 @color/md_theme_light_primary. 但是,在代码中,colorPrimary 只是一个常量,必须解决以澄清 which colorPrimary 您所指的是所有已定义的内容。最终,您使用哪个包来访问代码中的colorPrimary并不重要 - 它的value将解析为您在主题中设置的内容。
我有一个作为新任务启动的活动,我想在onStop中调用finish()(以便将其从最近的应用程序列表中排除)。但是我注意到一个错误,当改变主题时,比如说从......
我看到谷歌更新了一些应用程序(如Hangout)到新的Material Design。我怎样才能做到这一点呢?我有一个Nexus 5(Android 4.4),但如果我在styles.xml中设置主题为 "android: style ...
我的代码为ColorBox对象的列表无限期地洗牌颜色和索引。这是我的观点。
有没有人经历过这样的情况:你使用AppCompatDelegate更改主题,然后如果你点击后退按钮去之前的活动,该活动无法交互。...
我想在我的应用程序中为一个Button设置自定义样式,但我尝试设置一个自定义主题,但没有成功。例如,这并没有改变背景
我试图为素材主题的操作栏应用一个自定义样式。没有什么花哨的东西,只是简单的改变标题文本的颜色,但是我根本无法改变颜色。我已经设置了一个主题和 ...
我正在使用下面的代码来改变spinner的背景颜色。我很困惑为什么它不能工作。 style.xml ...</root>
从Theme.MaterialComponents.DayNight.DarkActionBar中提取昼夜资源。
我使用Theme.MaterialComponents.DayNight.DarkActionBar作为我的应用程序的主题,并希望通过编程获得,例如,android.R.attr.textColorPrimary颜色为暗模式和亮模式 ...
我在xml中定义了一个TextView,在Android Studio属性通道中的textColor属性显示[默认]"@android:colorecondary_text_material_light"。在Android Studio属性面板中的textColor属性显示[默认]"@android: colorsecondary_text_material_light"。如何获得这个默认颜色...
我正试图为我的应用程序创建一个时间选择器......当设置主题为Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth时,我得到了这样的输出,我得到了一个空白的空间....
即使没有设置黑暗模式,应用程序也引用了 values-night 文件夹中的值。 values-night 文件夹中的 colors.xml 文件 &amp;...
Android 10设备上的资源$NotFoundException
问题我注意到很多意外的崩溃,只有在Android 10设备上。崩溃的原因是在不同的布局中丢失了资源ID,但我无法重现它,即使在同一设备上...
如何在Android中使用Material Design在EditText和TextView中应用shapeAppreanace。
我想设计一个带圆角的TextView和EditTextView。有一个直接的解决方案。使用自定义形状背景。但是由于material design 1.1.0引入了......。
如何在Android中使用Material Design在EditText和TextView中应用shapeAppreanace。
我想设计一个带圆角的TextView和EditText。有一个直接的解决方案。使用自定义形状背景。但由于material design 1.1.0引入了shapeAppearance......。
如何去除Material Design中文本字段的背景色[重复]。
在新版本的素材设计库中,文本字段的外观发生了变化。如何将其恢复到以前的风格(没有灰色背景,没有完整的边框)?
在我的应用程序中,用户可以更改主题颜色,我希望将textColor动态地更改为黑色或白色,就像主题变暗时,textColor将更改为白色或在浅色主题中变为...
当在API 21下运行时,工具栏未显示。目前,我正在API 19仿真器中运行此应用。此相同布局可在运行于API 21以上且等于API 21的设备中正常工作。
Android的AppTheme风格的“活动”的默认背景颜色是什么?我在寻找十六进制代码或我可以参考的东西。它应该是LIGHT主题的一个,而对于...