diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ed4305 --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +# 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 + |