Skip to content
This repository has been archived by the owner on Dec 20, 2023. It is now read-only.

Use custom color #30

Closed
tcqq opened this issue Apr 18, 2018 · 11 comments
Closed

Use custom color #30

tcqq opened this issue Apr 18, 2018 · 11 comments

Comments

@tcqq
Copy link

tcqq commented Apr 18, 2018

How to set custom color codes for Accent and Primary colors, such as#FFFFFF?

If not support now, can you add a method to set the color code for Primary and Accent? This is useful, thanks.

@garretyoder
Copy link
Owner

garretyoder commented Apr 18, 2018

#FFFFFF is already in the library, that's ThemeColor.WHITE.

Support for what you're imagining (setPrimaryColor(hexColor: String) will never come because of the way colorful is built. Colorful uses Android's native style engine, which uses styles. Styles are a immutable object that cannot be created or modified at runtime.

However, a future planned feature is to allow users to define additional colors via user-provided style files.

See issue #23

@tcqq
Copy link
Author

tcqq commented Apr 18, 2018

I know Colorful all colors are through styles to get now, these colors can be used as the default color, But style can only meet few users, color can satisfy all users, So you can add a method like this, setPrimaryColor(hexColor: String okay?

@garretyoder
Copy link
Owner

Reread what I said above please. Setting a arbitrary hex color will never happen because of how Android's styles work. However, being able to define additional styles that have custom colors will come soon.

@tcqq
Copy link
Author

tcqq commented Apr 18, 2018

Check this library

Aesthetic.get()
    .colorPrimaryRes(R.color.md_indigo)
    .colorPrimaryDarkRes(R.color.md_indigo_dark)
    .colorAccentRes(R.color.md_yellow)
    .apply();

@garretyoder
Copy link
Owner

This library is archetected completely differently than colorful. Asthetic is the successor to ATE, a library I used to do work on. Asthetic overrides the view inflator and manually styles views. Colorful merges styles together and let's Android do it. Both approaches have their merits, Asthetic can be more flexible but is incredibly complex and has a high overhead. Colorful is a bit more restricted but is light and fast.

As I said, this feature will come soon, just in a different format. You will be able to define your own style file that contains whatever color you want and have colorful merge it.

@tcqq
Copy link
Author

tcqq commented Apr 18, 2018

But if this application allows users to pass custom color codes, style does not solve the problem.:sob:

@garretyoder
Copy link
Owner

garretyoder commented Apr 18, 2018

If you want to provide the user with a hex color picker for theme color, then I'd recommend you use a library like Asthetic and deal with the overhead. If you just want to add additional colors to colorful's pallet, that will come soon.

This is simply a limitation of the Android platform. I've been asking for mutable style objects for a long time.

@tcqq
Copy link
Author

tcqq commented Apr 18, 2018

Okay thank you.

@tcqq
Copy link
Author

tcqq commented Apr 20, 2018

@garretyoder Aesthetic has many problems and it is costly to maintain, If Colorful supports setting primary and accent colors programmatically, it will be perfect.
image
image

@garretyoder
Copy link
Owner

As I said, due to the fact that Colorful uses Android's native style engine, this is impossible and will not happen until such a time when Google allows mutable style objects.

I'd advise you to take a step back and ask do you really need to present your users with a hex color picker? I've found that most are more than happy with the material color pallet, which is why I wrote colorful.

@tcqq
Copy link
Author

tcqq commented Apr 20, 2018

I think you are right.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants