You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.5 KiB
108 lines
3.5 KiB
7 months ago
|
# Lint check for hardcoded colors
|
||
|
|
||
|
## What is this lint check for
|
||
|
|
||
|
This check detects whether hardcoded colors have been added in a CL.
|
||
|
|
||
|
Starting in Android O, multiple device themes will exist on devices, enabling
|
||
|
changing the look and feel of all system UI. In order to make that effort
|
||
|
possible, colors in component that uses this check must be specified using
|
||
|
theme attributes, rather than hardcoded colors. Otherwise, when the theme
|
||
|
changes, this UI will not update properly.
|
||
|
|
||
|
## Examples of hardcoded colors
|
||
|
|
||
|
### Color files
|
||
|
|
||
|
```xml
|
||
|
<!-- File: res/values/colors.xml -->
|
||
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<resources>
|
||
|
<color name="hardcoded_color">#FFFFFF</color>
|
||
|
</resources>
|
||
|
```
|
||
|
|
||
|
### Layout files
|
||
|
|
||
|
```xml
|
||
|
<!-- File: res/layout/my_layout.xml -->
|
||
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<TextView
|
||
|
android:textColor="#FF000000" />
|
||
|
```
|
||
|
|
||
|
Or
|
||
|
|
||
|
```xml
|
||
|
<!-- File: res/layout/my_layout.xml -->
|
||
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<TextView
|
||
|
android:textColor="@color/hardcoded_color" />
|
||
|
```
|
||
|
|
||
|
### Style files
|
||
|
|
||
|
```xml
|
||
|
<!-- File: res/values/styles.xml -->
|
||
|
<style name="MyStyle">
|
||
|
<item name="android:textColor">#ff3c3c3c</item>
|
||
|
</style>
|
||
|
```
|
||
|
|
||
|
## How to fix it
|
||
|
|
||
|
### Use attributes in theming as much as possible
|
||
|
|
||
|
Here are some tips to choose the colors.
|
||
|
|
||
|
#### Choose colors for text
|
||
|
|
||
|
Use color attributes specified in the theme. Some examples:
|
||
|
|
||
|
1. `textColorPrimary`
|
||
|
2. `textColorSecondary`
|
||
|
3. `colorAccent`
|
||
|
|
||
|
#### Choose colors for icon
|
||
|
|
||
|
For `vector drawable`, please use full opacity color as `fillColor` and `tint`
|
||
|
it with theme attribute.
|
||
|
[example](https://googleplex-android-review.git.corp.google.com/#/c/1606392/2/packages/SettingsLib/res/drawable/ic_menu.xml)
|
||
|
|
||
|
#### Others
|
||
|
|
||
|
Please check the following table for more available options.
|
||
|
|
||
|
| Attribute | Description |
|
||
|
|---|---|
|
||
|
| colorAccent | Bright complement to the primary branding color. By default, this is the color applied to framework controls (via colorControlActivated). |
|
||
|
| colorForeground | Color for foreground imagery. Most text and image colors will be based on some alpha of colorForeground. |
|
||
|
| colorBackground | Color of background imagery, ex. full-screen windows. |
|
||
|
| colorBackgroundFloating | Color of background imagery for floating components, ex. dialogs, popups, and cards. |
|
||
|
| colorPrimary | The primary branding color for the app. This is the color applied to the action bar background. |
|
||
|
| colorPrimaryDark | Dark variant of the primary branding color. By default, this is the color applied to the status bar (via statusBarColor) and navigation bar (via navigationBarColor). |
|
||
|
| colorError | Color used for error states and things that need to be drawn to the users attention. |
|
||
|
| textColorPrimary (colorPrimaryText) | Is now constructed out of colorForeground and primaryContentAlpha. |
|
||
|
| textColorSecondary (colorSecondaryText) | Is now constructed out of colorForeground and primaryContentAlpha. |
|
||
|
|
||
|
## How to bypass it
|
||
|
|
||
|
**We strongly discourage bypassing color lint check**.
|
||
|
|
||
|
However, if you need to bypass the check, please update the `baseline.xml` by running following
|
||
|
command in package root folder(i.e. package/app/Settings/)
|
||
|
|
||
|
```
|
||
|
export ANDROID_LINT_JARS=$(gettop)/prebuilts/checkcolor/checkcolor.jar
|
||
|
lint --check HardCodedColor --xml color-check-baseline.xml .
|
||
|
```
|
||
|
|
||
|
After update the `baseline.xml`, your hardcoded color will be ignored in check. Please submit the
|
||
|
new `baseline.xml` within your cl.
|
||
|
|
||
|
## Contact us
|
||
|
|
||
|
1. For help to remove hardcoded colors or report issue in color check, please contact
|
||
|
jackqdyulei@google.com
|
||
|
|