CoderAlee / PaintedSkin

一款解决Android App 换肤框架,极低的侵入性与学习成本。
Apache License 2.0
169 stars 23 forks source link

如何切换MaterialComponents主题色 #11

Open GXSZone opened 3 years ago

GXSZone commented 3 years ago

我在皮肤包里定义了 <color name="colorPrimary">#FFFFFF</color> <color name="colorPrimaryDark">#FF9800</color> <color name="colorAccent">#FF9800</color> 但是切换主题时MaterialComponents并没有更改主题颜色,在代码中设置setTheme(R.style.AppTheme);也不起作用。 直接更改colorAccent可以很方便的使整个app的MaterialComponents颜色统一,但目前我无法解决

GXSZone commented 3 years ago

现在在宿主App里定义了一个与yellow皮肤包对应的AppTheme_Yellow主题色,当切换皮肤包的同时,宿主同时执行切换主题AppTheme_Yellow

CoderAlee commented 3 years ago

我在皮肤包里定义了 <color name="colorPrimary">#FFFFFF</color> <color name="colorPrimaryDark">#FF9800</color> <color name="colorAccent">#FF9800</color> 但是切换主题时MaterialComponents并没有更改主题颜色,在代码中设置setTheme(R.style.AppTheme);也不起作用。 直接更改colorAccent可以很方便的使整个app的MaterialComponents颜色统一,但目前我无法解决

MaterialComponents 的问题正在调查

SakurajimaMaii commented 11 months ago

感觉还是有类似的问题,我在app和皮肤包定义了两个颜色,如图所示: image image 但是切换主题后颜色显示是错误的:

https://github.com/CoderAlee/PaintedSkin/assets/46998172/c5294c1c-3fea-461c-a79d-74e6509976dc

SakurajimaMaii commented 11 months ago

我又添加了两个测试View image 分别对应fab的背景颜色和图标颜色,然后进行主题切换,可以看到View对应的颜色替换正确但是fab的颜色还是替换错误

Uploading test.mp4…

CoderAlee commented 11 months ago

FloatingActionButton不是基础View,如果要使其支持换肤。可以参考Demo中的CustomViewCompat类,分别实现IExpandedFactory2 与IThemeSkinExecutorBuilder

CoderAlee commented 11 months ago

我又添加了两个测试View image 分别对应fab的背景颜色和图标颜色,然后进行主题切换,可以看到View对应的颜色替换正确但是fab的颜色还是替换错误

Uploading test.mp4…

FloatingActionButton不是基础View,如果要使其支持换肤。可以参考Demo中的CustomViewCompat类,分别实现IExpandedFactory2 与IThemeSkinExecutorBuilder

SakurajimaMaii commented 11 months ago

我又添加了两个测试View image 分别对应fab的背景颜色和图标颜色,然后进行主题切换,可以看到View对应的颜色替换正确但是fab的颜色还是替换错误 Uploading test.mp4…

FloatingActionButton不是基础View,如果要使其支持换肤。可以参考Demo中的CustomViewCompat类,分别实现IExpandedFactory2 与IThemeSkinExecutorBuilder

好的,我去参考一下。

CoderAlee commented 11 months ago

我又添加了两个测试View image 分别对应fab的背景颜色和图标颜色,然后进行主题切换,可以看到View对应的颜色替换正确但是fab的颜色还是替换错误 Uploading test.mp4…

FloatingActionButton不是基础View,如果要使其支持换肤。可以参考Demo中的CustomViewCompat类,分别实现IExpandedFactory2 与IThemeSkinExecutorBuilder

好的,我去参考一下。

IExpandedFactory2 用于提供换肤框架无法直接创建的View,IThemeSkinExecutorBuilder用于处理自定义属性换肤