mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-01-12 22:50:10 +08:00
Summary: RN offers checkbox component on android: https://facebook.github.io/react-native/docs/checkbox.html The Checkbox colors for checked and unchecked states cannot be controlled from JS at the moment; this PR adds support for that. The essence of changing colors for the states is this: ``` ColorStateList cls = new ColorStateList( new int[][] { new int[] { -android.R.attr.state_checked }, // unchecked new int[] { android.R.attr.state_checked } // checked }, new int[] { uncheckedColor, checkedColor } ); checkBox.setSupportButtonTintList(cls); ``` Because of this, I did it so that both colors have to provided together in an object. This is similar to [switch](https://facebook.github.io/react-native/docs/switch#trackcolor) Pull Request resolved: https://github.com/facebook/react-native/pull/18300 Differential Revision: D14180218 Pulled By: cpojer fbshipit-source-id: 88a9d1faf061c0651e3e28950f697535b90fbfd4
53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
* @format
|
|
*/
|
|
'use strict';
|
|
|
|
const requireNativeComponent = require('requireNativeComponent');
|
|
|
|
import type {ViewProps} from 'ViewPropTypes';
|
|
import type {SyntheticEvent} from 'CoreEventTypes';
|
|
import type {NativeComponent} from 'ReactNative';
|
|
|
|
type CheckBoxEvent = SyntheticEvent<
|
|
$ReadOnly<{|
|
|
target: number,
|
|
value: boolean,
|
|
|}>,
|
|
>;
|
|
|
|
type NativeProps = $ReadOnly<{|
|
|
...ViewProps,
|
|
|
|
/**
|
|
* Used in case the props change removes the component.
|
|
*/
|
|
onChange?: ?(event: CheckBoxEvent) => mixed,
|
|
|
|
/**
|
|
* Invoked with the new value when the value changes.
|
|
*/
|
|
onValueChange?: ?(value: boolean) => mixed,
|
|
|
|
/**
|
|
* Used to locate this view in end-to-end tests.
|
|
*/
|
|
testID?: ?string,
|
|
|
|
on?: ?boolean,
|
|
enabled?: boolean,
|
|
tintColors: {|true: ?number, false: ?number|} | typeof undefined,
|
|
|}>;
|
|
|
|
type CheckBoxNativeType = Class<NativeComponent<NativeProps>>;
|
|
|
|
module.exports = ((requireNativeComponent(
|
|
'AndroidCheckBox',
|
|
): any): CheckBoxNativeType);
|