【发布时间】:2018-12-16 18:26:32
【问题描述】:
嗨,我们可以在颤振中自定义标签栏宽度吗?我的标签栏宽度在这里是固定的,所以当我的标签栏中有长文本时,它不会完全显示,我想让我的标签栏宽度根据内容灵活,所以当我的文本只是短文本时,标签栏宽度会很小而且当文本是长文本时,标签栏宽度大于短文本标签。我一直在尝试在互联网上搜索它,但我找不到任何答案来解决我的问题。
【问题讨论】:
标签: dart material-design flutter
嗨,我们可以在颤振中自定义标签栏宽度吗?我的标签栏宽度在这里是固定的,所以当我的标签栏中有长文本时,它不会完全显示,我想让我的标签栏宽度根据内容灵活,所以当我的文本只是短文本时,标签栏宽度会很小而且当文本是长文本时,标签栏宽度大于短文本标签。我一直在尝试在互联网上搜索它,但我找不到任何答案来解决我的问题。
【问题讨论】:
标签: dart material-design flutter
TabBar(isScrollable: true)
制作一个可滚动的标签栏。当您的标签文本内容或标签数量不适合显示大小时,它很有用。
或者你可以这样做:
child: new TabBar(
tabs: [
new Container(
width: 30.0,
child: new Tab(text: 'hello'),
),
new Container(
child: new Tab(text: 'world'),
),
],
)
【讨论】:
我是这样解决这个问题的:
bottom: TabBar(
isScrollable: true,
controller: _tabController,
indicatorColor: Colors.white,
labelPadding: EdgeInsets.symmetric(horizontal: 10.0),
tabs: <Widget>[
Tab(
icon: Icon(Icons.camera_alt),
),
Tab(
text: "CONVERSAS",
),
Tab(
text: "STATUS",
),
Tab(
text: "CHAMADAS",
)
],
)
只需使用填充,我认为它适用于所有屏幕尺寸! ...别忘了:
isScrollable: true
【讨论】:
double width = MediaQuery.of(context).size.width;
double yourWidth = width / 5;
bottom: TabBar(
indicatorColor: Colors.white,
indicatorSize: TabBarIndicatorSize.label,
isScrollable: true,
controller: _tabcontroller,
tabs: <Widget>[
Container(
width: 30,
height: 50,
alignment: Alignment.center,
child: Icon(
Icons.camera_alt,
),
),
Container(
width: yourWidth,
height: 50,
alignment: Alignment.center,
child: Text("CHATS")),
Container(
width: yourWidth,
height: 50,
alignment: Alignment.center,
child: Text("STATUS")),
Container(
width: yourWidth,
height: 50,
alignment: Alignment.center,
child: Text("CALL"))
],
),`
---------------
`
【讨论】:
您可以像这样将labelPadding 添加到您的 TabBar 小部件:
child: TabBar(
indicatorColor: Colors.white,
labelPadding: EdgeInsets.symmetric(horizontal: 2.0),
....
tabs: <Tab>[
......
]
)
......
或者你可以这样做(我不推荐)
在 material/tabs.dart 文件中,编辑这一行:
padding: widget.labelPadding ?? tabBarTheme.labelPadding ?? kTabLabelPadding,
类似的东西
padding: EdgeInsets.symmetric(horizontal: 2.0),
默认情况下,flutter 使用kTabLabelPadding 进行填充。
颤振问题here
【讨论】:
适用于不同尺寸的设备:
double orjWidth = MediaQuery.of(context).size.width;
double cameraWidth = orjWidth/24;
double yourWidth = (orjWidth - cameraWidth)/5;
bottom: TabBar(
controller: _tabController,
indicatorColor: Colors.white,
labelPadding: EdgeInsets.symmetric(horizontal:(orjWidth - ( cameraWidth + yourWidth*3))/8),
isScrollable: true,
tabs: [
Container(
child: Tab(icon: Icon(Icons.camera_alt)),
width: cameraWidth,
),
Container(
child: Tab(
text: "CHATS",
),
width: yourWidth,
),
Container(
child: Tab(
text: "STATUS",
),
width: yourWidth,
),
Container(
child: Tab(
text: "CALL",
),
width: yourWidth,
),
【讨论】:
【讨论】: