TextInputLayout 以编程方式设置 startIconDrawable 的颜色

Ass*_*nov 5 android material-design android-textinputlayout material-components material-components-android

我想以TextInputLayout编程方式为我的启动图标设置开始图标,但我遇到了他的颜色问题。当我设置 drawable 时,它​​的颜色变成灰色,但它的原始颜色是橙色。我知道我可以通过startIconTint在 xml 中使用参数来改变它的颜色,但我想以编程方式改变它的颜色。有人可以帮我弄这个吗。

Gab*_*tti 8

只需使用方法setStartIconDrawablesetStartIconTintList

textInputLayout.setStartIconDrawable(...);
textInputLayout.setStartIconTintList(ContextCompat.getColorStateList(this,R.color.text_input_selector));
Run Code Online (Sandbox Code Playgroud)

您可以使用颜色或颜色选择器。
就像是:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_activated="true"/>
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.54" android:color="?attr/colorOnSurface"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的答案。我使用 ColorStateList 的 valueOf(color: Int) 方法解决了这个问题。最终版本看起来像“textInputLayout.setStartIconTintList(ColorStateList.valueOf(resources.getColor(R.color.color_name)));” (3认同)