如何在Flutter中自定义标签栏宽度?

The*_*ang 5 dart material-design flutter

嗨,我们可以在Flutter中自定义标签栏宽度吗?我的标签栏宽度固定在此处,因此当我在标签栏中长文本时,它不会完全显示,我想根据内容使标签栏宽度灵活,因此当我的文本只是短文本时,标签栏宽度会很小,并且当文本为长文本时,选项卡宽度大于短文本选项卡。我一直尝试在互联网上搜索它,但找不到任何解决问题的答案。

在此处输入图片说明

Leo*_*ero 17

这是我解决这个问题的方法:

    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",
        )
      ],
    )
Run Code Online (Sandbox Code Playgroud)

只需使用填充,我认为它适用于所有屏幕尺寸!......不要忘记:

   isScrollable: true
Run Code Online (Sandbox Code Playgroud)


beh*_*ati 9

TabBar(isScrollable: true)
Run Code Online (Sandbox Code Playgroud)

制作可滚动的标签栏。当您的标签文字内容或标签数量不适合显示尺寸时,此功能很有用。

或者,您可以执行以下操作:

child: new TabBar(
            tabs: [
              new Container(
                width: 30.0,
                child: new Tab(text: 'hello'),
              ),
              new Container(
                  child: new Tab(text: 'world'),
              ),
            ],
          )
Run Code Online (Sandbox Code Playgroud)

  • 是的,它很有用,但我想要的是使选项卡栏宽度更小,图标相机和聊天选项卡之间有很多未使用的空间,我该如何实现这一点?Whatsapp 可以做到这一点,他们可以将相机图标选项卡做得很小。所以问题是我们可以在 flutter 中做到这一点吗? (4认同)

Har*_*ala 6

  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"))
            ],
          ),`


---------------

`
Run Code Online (Sandbox Code Playgroud)


Pau*_*tta 5

您可以labelPadding像这样添加到 TabBar Widget 中:

child: TabBar(
        indicatorColor: Colors.white,
        labelPadding: EdgeInsets.symmetric(horizontal: 2.0),
        ....
        tabs: <Tab>[
                     ......
        ]
)
......
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做(我不推荐)

在material/tabs.dart 文件中,编辑以下行:

padding: widget.labelPadding ?? tabBarTheme.labelPadding ?? kTabLabelPadding,
Run Code Online (Sandbox Code Playgroud)

与类似的东西

padding: EdgeInsets.symmetric(horizontal: 2.0),
Run Code Online (Sandbox Code Playgroud)

默认情况下,flutter 使用kTabLabelPadding填充。

颤振问题在这里