以下是EditText
' abc_edit_text_material
可绘制的XML:
<selector>
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
</selector>
它定义了一组图像而不是颜色(我无法跟踪应用颜色的时刻)。
以下代码使得底线始终保持红色,尽管其厚度随着焦点而变化(因此,相同的<selector>
仍在使用中):
Drawable back = edittext.getBackground();
back.setColorFilter(0xffff0000, PorterDuff.Mode.SRC_ATOP);
editText.setBackground(back);
但是如果之后我恢复了默认的drawable,颜色会根据当前的焦点状态开始变化(灰色不聚焦,重点强调):
back.setBackgroundResource(R.drawable.abc_edit_text_material);
问题:
selector
后使用了相同的Drawable
? selector
&#39; s state_enabled
等对应的一组颜色? AppCompatEditText
到View
的来源,但没有找到类似的内容答案 0 :(得分:1)
为什么不呢?通过getBackground()
,您可以检索StateListDrawable
,它似乎接受彩色滤镜。
响应焦点是默认行为,以清除当前正在关注的项目以及键盘输入的位置。您没有重置过滤后的背景;你指的是原来的那个。
类存储其默认背景,并将过滤器应用于未聚焦(colorControlNormal
)和焦点(colorControlActivated
)状态。如果你改变它,那么它就会改变,过滤器就会消失。