TextInputLayout:以编程方式设置框笔触颜色(突出显示和不突出显示)

Tyl*_*mes 7 android android-textinputlayout material-components material-components-android

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

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

有没有干净的方法来以编程方式设置未突出显示的框笔触颜色?

Gab*_*tti 9

您可以使用该setBoxStrokeColorStateList方法。就像是:

textInputLayout.setBoxStrokeColorStateList(AppCompatResources.getColorStateList(this,R.color.text_input_layout_stroke_color));
Run Code Online (Sandbox Code Playgroud)

它与选择器一起工作,如下所示:

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