【问题标题】:TextInputLayout: Set box stroke color programmatically (highlighted and unhighlighted)TextInputLayout:以编程方式设置框的描边颜色(突出显示和不突出显示)
【发布时间】:2019-06-10 20:31:03
【问题描述】:

我正在尝试将这些材料文本字段与框轮廓样式一起使用。我看到有一个名为 boxStrokeColor 的属性,它允许我设置笔触仅在文本字段被突出显示时,当它未突出显示时,它似乎从全局主题的 colorPrimary 值中提取该颜色。

在我们的应用中,用户可以为某些视图设置自己的背景颜色,我想将文本字段的笔触颜色更改为合适的对比色。

有没有什么简洁的方法可以以编程方式设置未突出显示的方框描边颜色?

【问题讨论】:

  • 您找到解决方案了吗?想知道同样的事情。可悲的是,材料组件似乎总是执行得非常好,但是当您开始使用它们时,您会发现它们似乎总是缺少一些东西...
  • 不幸的是还没有。我很欣赏这些库中的工作,但它看起来确实是一种“广度优先”的方法,其中一些组件缺乏明显的配置选项。我个人讨厌组件依赖全局主题并且不能以编程方式调整。

标签: android android-textinputlayout material-components material-components-android


【解决方案1】:

经过大量实验,我发现了这里。这是正确的格式

val colorState = ColorStateList(
        arrayOf(intArrayOf(android.R.attr.state_active),
            intArrayOf( android.R.attr.state_focused),
            intArrayOf( -android.R.attr.state_focused),
            intArrayOf( android.R.attr.state_hovered),
            intArrayOf( android.R.attr.state_enabled),
            intArrayOf(- android.R.attr.state_enabled)),
        intArrayOf(Color.parseColor(activeColor), 
            Color.parseColor(focusedColor),     
            Color.parseColor(unfocusedcolor), 
            Color.parseColor(hoveredColor),
            Color.parseColor(enabledColor),
            Color.parseColor(disabledColor))
    )

    inputLayout.setBoxStrokeColorStateList(colorState)

【讨论】:

    【解决方案2】:

    您可以使用 setBoxStrokeColorStateList 方法。 比如:

    textInputLayout.setBoxStrokeColorStateList(AppCompatResources.getColorStateList(this,R.color.text_input_layout_stroke_color));
    

    它与选择器一起使用:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:color="?attr/colorPrimary" android:state_focused="true"/>
      <item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
      <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
      <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
    </selector>
    

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多