This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
RadioButton
一个用于单选控件的 Jetpack Compose RadioButton 组件。
Android
Included in Expo Go
一个用于从一组选项中选择单个选项的单选按钮组件。映射到官方 Jetpack Compose RadioButton API。

安装
Terminal
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
用法
基本单选按钮
一个带有 onClick 处理器的独立单选按钮。
BasicRadioButton.tsx
import { useState } from 'react'; import { Host, RadioButton } from '@expo/ui/jetpack-compose'; export default function BasicRadioButton() { const [selected, setSelected] = useState(false); return ( <Host matchContents> <RadioButton selected={selected} onClick={() => setSelected(!selected)} /> </Host> ); }
单选组(推荐)
单选组的推荐模式遵循 Compose 无障碍指南:
- 使用带有
selectableGroup()修饰符的Column包裹该组,以便屏幕阅读器将这些选项视为一个组。 - 在每个
Row上应用带有role: 'radioButton'的selectable修饰符,使整行(包括标签)都可点击。 - 不要给
RadioButton本身传入onClick,由行来处理交互。这样可以提供更大的触控目标。
RadioGroup.tsx
import { useState } from 'react'; import { Host, Column, Row, RadioButton, Text } from '@expo/ui/jetpack-compose'; import { selectable, selectableGroup, fillMaxWidth, height, padding, } from '@expo/ui/jetpack-compose/modifiers'; export default function RadioGroup() { const [selectedOption, setSelectedOption] = useState('Calls'); const options = ['Calls', 'Missed', 'Friends']; return ( <Host matchContents> <Column modifiers={[selectableGroup()]}> {options.map(label => ( <Row key={label} verticalAlignment="center" modifiers={[ fillMaxWidth(), height(56), selectable(label === selectedOption, () => setSelectedOption(label), 'radioButton'), padding(16, 0, 16, 0), ]}> <RadioButton selected={label === selectedOption} /> <Text modifiers={[padding(16, 0, 0, 0)]}>{label}</Text> </Row> ))} </Column> </Host> ); }
API
import { RadioButton } from '@expo/ui/jetpack-compose';
Component
Type: React.Element<RadioButtonProps>
A Material Design radio button.