/**
* 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.
*
* @format
*/
'use strict';
const React = require('react');
const ReactNative = require('react-native');
const {
AccessibilityInfo,
StyleSheet,
Text,
View,
ToastAndroid,
TouchableWithoutFeedback,
} = ReactNative;
const RNTesterBlock = require('./RNTesterBlock');
const RNTesterPage = require('./RNTesterPage');
const importantForAccessibilityValues = [
'auto',
'yes',
'no',
'no-hide-descendants',
];
class AccessibilityAndroidExample extends React.Component {
state = {
count: 0,
backgroundImportantForAcc: 0,
forgroundImportantForAcc: 0,
screenReaderEnabled: false,
};
componentDidMount() {
AccessibilityInfo.addEventListener(
'change',
this._handleScreenReaderToggled,
);
AccessibilityInfo.fetch().done(isEnabled => {
this.setState({
screenReaderEnabled: isEnabled,
});
});
}
componentWillUnmount() {
AccessibilityInfo.removeEventListener(
'change',
this._handleScreenReaderToggled,
);
}
_handleScreenReaderToggled = isEnabled => {
this.setState({
screenReaderEnabled: isEnabled,
});
};
_addOne = () => {
this.setState({
count: ++this.state.count,
});
};
_changeBackgroundImportantForAcc = () => {
this.setState({
backgroundImportantForAcc: (this.state.backgroundImportantForAcc + 1) % 4,
});
};
_changeForgroundImportantForAcc = () => {
this.setState({
forgroundImportantForAcc: (this.state.forgroundImportantForAcc + 1) % 4,
});
};
render() {
return (
This is
nontouchable normal view.
This is
nontouchable accessible view without label.
This is
nontouchable accessible view with label.
This is
nontouchable accessible view with label.
ToastAndroid.show('Toasts work by default', ToastAndroid.SHORT)
}
accessibilityRole="link">
Click me
Or not
ToastAndroid.show('Toasts work by default', ToastAndroid.SHORT)
}
accessibilityRole="button">
Click me
Or not
ToastAndroid.show('Toasts work by default', ToastAndroid.SHORT)
}
accessibilityRole="button"
accessibilityStates={['disabled']}
disabled={true}>
I am disabled
Clicking me will not trigger any action.
ToastAndroid.show('Toasts work by default', ToastAndroid.SHORT)
}
accessibilityRole="button"
accessibilityHint="Triggers
Toasts">
Click Me!
Accessible view with hint, role, and state
Talkback will say: accessibility hint button, selected{' '}
Accessible view with label, hint, role, and state
Talkback will say: accessibility label, hint button, selected{' '}
This accessible view has no label, so the text is read.
Click me
Clicked {this.state.count} times
The screen reader is{' '}
{this.state.screenReaderEnabled ? 'enabled' : 'disabled'}.
Hello
world
Change importantForAccessibility for background layout.
Background layout importantForAccessibility
{
importantForAccessibilityValues[
this.state.backgroundImportantForAcc
]
}
Change importantForAccessibility for forground layout.
Forground layout importantForAccessibility
{
importantForAccessibilityValues[
this.state.forgroundImportantForAcc
]
}
);
}
}
const styles = StyleSheet.create({
embedded: {
backgroundColor: 'yellow',
padding: 10,
},
container: {
flex: 1,
backgroundColor: 'white',
padding: 10,
height: 150,
},
});
exports.title = 'Accessibility';
exports.description = 'Examples of using Accessibility API.';
exports.examples = [
{
title: 'Accessibility elements',
render(): React.Element {
return ;
},
},
];