You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@mui/material@5.15.14:TextField的startAdornment中RadioGroup的row属性失效

解决TextField的startAdornment中RadioGroup水平排列失效问题

问题出在InputAdornment的默认样式限制了内部RadioGroup的布局表现,即便设置了row属性,也会因为容器的内联特性导致水平排列不生效。可以通过以下两种方式修复:

方法一:给RadioGroup添加自定义flex布局样式

直接在RadioGroup上通过sx属性强制设置水平flex布局,覆盖默认的样式限制:

import * as React from 'react';
import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import FormControlLabel from '@mui/material/FormControlLabel';
import { InputAdornment, TextField } from '@mui/material';

export default function RadioButtonsGroup() {
  return (
    <TextField
      label="LABEL"
      InputProps={{
        startAdornment: (
          <InputAdornment position="start">
            <RadioGroup
              defaultValue='yes'
              sx={{ display: 'flex', flexDirection: 'row', gap: 2 }} // 强制水平排列并设置间距
            >
              <FormControlLabel
                value="yes"
                control={<Radio />}
                label="Yes"
              />
              <FormControlLabel
                value="no"
                control={<Radio />}
                label="No"
              />
            </RadioGroup>
          </InputAdornment>
        ),
      }}
    />
  );
}

方法二:调整InputAdornment的容器样式

给InputAdornment设置display: flex,让内部元素有足够的空间进行水平布局:

import * as React from 'react';
import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import FormControlLabel from '@mui/material/FormControlLabel';
import { InputAdornment, TextField } from '@mui/material';

export default function RadioButtonsGroup() {
  return (
    <TextField
      label="LABEL"
      InputProps={{
        startAdornment: (
          <InputAdornment 
            position="start"
            sx={{ display: 'flex' }} // 修改容器布局
          >
            <RadioGroup
              defaultValue='yes'
              row
            >
              <FormControlLabel
                value="yes"
                control={<Radio />}
                label="Yes"
              />
              <FormControlLabel
                value="no"
                control={<Radio />}
                label="No"
              />
            </RadioGroup>
          </InputAdornment>
        ),
      }}
    />
  );
}

原因说明

InputAdornment默认使用inline-flex布局,宽度会根据内容收缩,导致RadioGroup的row属性无法正常触发水平排列。通过强制设置RadioGroup的flex方向,或者调整InputAdornment的布局方式,就能让单选按钮组正常水平显示。

内容的提问来源于stack exchange,提问作者Yukito Fujita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:55:25