当前位置: 首页 > 知识库问答 >
问题:

如何更改文本字段下划线颜色?

尤茂材
2023-03-14

我对这两个都不熟悉

在我所有的表单中,textField的下划线都显示为蓝色。我想把它换成其他颜色。我使用的代码就像。。。

new TextField(
  controller: this._emailController,
  decoration: new InputDecoration(
      hintText: "Enter your email",
      labelText: "Email",
      labelStyle: new TextStyle(
          color: const Color(0xFF424242)
      )
  ),

),

无法理解如何实现这一点。

注意:我知道这里有一个类似的问题,在flifter中更改TextField的下划线。但是,在那里也没有完全解决。另外,还有一个链接看起来与我的类似,它在这里使用appcompat v7更改EditText底线颜色,但实际上是属于Android开发的,它使用的是JAVA,而不是我在Android应用开发中使用的DART(flatter)。所以,请不要对这些链接感到困惑。

共有3个答案

梁丘威
2023-03-14

要更改整个应用程序的颜色,请使用ThemeDatainputDecorationTheme属性。

>

  • 仅在输入对焦时使用颜色(即单击

    MaterialApp(
      ...
      theme: ThemeData(
        inputDecorationTheme: InputDecorationTheme(
          focusedBorder: UnderlineInputBorder(
            borderSide: BorderSide(color: Colors.red)
          ),
        )
      )
    )
    

    要始终使用颜色(即使在不对焦时),请同时设置enabledBorderborder

    MaterialApp(
      ...
      theme: ThemeData(
        inputDecorationTheme: InputDecorationTheme(
          focusedBorder: UnderlineInputBorder(
            borderSide: BorderSide(color: Colors.red)
          ),
          enabledBorder: UnderlineInputBorder(
            borderSide: BorderSide(color: Colors.red),
          ),
          border: UnderlineInputBorder(
            borderSide: BorderSide(color: Colors.red),
          ),
        )
      )
    )
    

  • 景嘉志
    2023-03-14

    **见下文更新或见@GJJ2019的答案**

    合乎逻辑的答案是使用InputBorder,特别是UnderlineInputDecorator,并将其作为边框传递给inputdecorator。但是,所有这一切只是告诉InputDecorator is是否应该使用下划线或您指定的任何其他内容。

    实际的颜色是基于主题-从来源:

    Color _getActiveColor(ThemeData themeData) {
      if (isFocused) {
        switch (themeData.brightness) {
          case Brightness.dark:
            return themeData.accentColor;
          case Brightness.light:
            return themeData.primaryColor;
        }
      }
      return themeData.hintColor;
    }
    

    因此,要更改颜色,请执行以下操作(或为整个应用程序指定主题):

    new Theme(
      data: new ThemeData(
        primaryColor: Colors.red,
        accentColor: Colors.orange,
        hintColor: Colors.green
      ),
      child: new TextField(
        decoration: new InputDecoration(
          hintText: "Enter your email",
          labelText: "Email",
          labelStyle: new TextStyle(color: const Color(0xFF424242)),
          border: new UnderlineInputBorder(
            borderSide: new BorderSide(
              color: Colors.red
            )
          )
        ),
      ),
    ),
    

    更新:

    现在,您可以按照预期的方式完成此操作。

    decoration: InputDecoration(        
      enabledBorder: UnderlineInputBorder(      
        borderSide: BorderSide(color: theColor),   
      ),  
      focusedBorder: UnderlineInputBorder(
        borderSide: BorderSide(color: theColor),
      ),
      border: UnderlineInputBorder(
        borderSide: BorderSide(color: theColor),
      ),
    )
    
    尉迟子民
    2023-03-14

    刚刚使用-:

    decoration: InputDecoration(        
                  enabledBorder: UnderlineInputBorder(      
                          borderSide: BorderSide(color: Colors.cyan),   
                          ),  
                  focusedBorder: UnderlineInputBorder(
                          borderSide: BorderSide(color: Colors.cyan),
                       ),  
                 ),
    

    它适用于我:)

     类似资料:
    • 我试图改变一个文本字段的下划线颜色时,它的非活动/不集中。我不确定在哪里进行此更改,输入装饰主题仅在选中时更改下划线颜色。我如何实现这一点? 我试图改变这种颜色文本字段为浅灰色时,它没有选择/失去焦点。

    • 我可以使用以下代码将颜色的轮廓颜色更改为纯色: 但是,我无法将其颜色更改为渐变,因为它只接受颜色作为输入。如何将其下划线颜色更改为颤振中的线性渐变?

    • 问题内容: 我在这里有此代码: 首先,如您所见,它带有下划线()。其次,所有文字均为红色。那么,是否有将文本($ username)留为红色而下划线为黑的情况? 问题答案: 不能。您最好的方法是使用其他颜色的,但这并不是 真正的重点 。

    • 默认是某种蓝色(可能是全息蓝色),但我需要将其更改为橙色。问题是,我不知道这到底是怎么叫的(这是下划线,指示器还是什么?),所以我不能自己谷歌这个。 谢谢

    • WebStorm似乎是web开发的IDE,我一直很喜欢它。唯一的问题是过梁的错误强调: 由于这种浅色,我花了相当多的时间进行调试,而错误本来就不应该发生,我环顾四周,没有找到更改颜色的方法。这在WebStorm中可能吗? 即使是黑色的主题也没有强烈对比的下划线。我们能改变它吗?

    • 我在javaFX中有一个文本字段,在该字段中键入的任何内容都必须以蓝色显示,这可以通过css实现吗?如果是,那么如何?