Flutter中TableCalendar标题位置调整及文本样式修改问题
TableCalendar 标题自定义解决方案
1. 年月标题靠右对齐
直接通过headerBuilder自定义标题区域,完全控制布局对齐,无需用空格占位适配。核心是用Align组件将标题内容固定在右侧。
2. 单独调整月份/年份字号
在自定义标题中使用RichText组件,拆分月份和年份文本,分别设置不同的TextStyle实现字号差异。
完整示例代码
TableCalendar( firstDay: DateTime.utc(2020, 1, 1), lastDay: DateTime.utc(2030, 12, 31), focusedDay: DateTime.now(), headerStyle: HeaderStyle( titleTextStyle: TextStyle(color: Colors.transparent), // 隐藏默认标题 formatButtonVisible: false, // 按需隐藏格式切换按钮 leftChevronVisible: true, // 保留左箭头 rightChevronVisible: true, // 保留右箭头 ), headerBuilder: (context, focusedDay) { // 提取月份和年份文本 final monthText = DateFormat('MMMM').format(focusedDay); final yearText = DateFormat('yyyy').format(focusedDay); return Align( alignment: Alignment.centerRight, child: Padding( padding: const EdgeInsets.symmetric(vertical: 12), child: RichText( text: TextSpan( style: DefaultTextStyle.of(context).style, children: [ TextSpan( text: '$monthText ', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600), ), TextSpan( text: yearText, style: TextStyle(fontSize: 14), ), ], ), ), ), ); }, )
关键说明
headerBuilder完全接管标题区域的UI构建,不受默认布局限制Align组件直接控制标题整体的对齐方向RichText实现同一段文本内的不同样式配置,灵活调整月份和年份的字号、权重
内容的提问来源于stack exchange,提问作者pej
相关产品推荐
相关产品推荐

