gpt4 book ai didi

android - EditText 底线颜色在焦点上变化

转载 作者:行者123 更新时间:2023-11-30 01:57:27 27 4
gpt4 key购买 nike

这是 EditTextabc_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);

但如果在那之后我恢复默认的可绘制对象,颜色会根据当前的焦点状态开始变化(灰色未聚焦,重音聚焦):

back.setBackgroundResource(R.drawable.abc_edit_text_material);

问题:

  1. 为什么是一样的selector在应用修改后使用 Drawable
  2. 为什么在将相同的 XML 可绘制对象重新设置为背景后,颜色开始响应焦点变化?是否有一些对象存储一组对应于 selector 的颜色的 state_enabled , ETC?
  3. (也许,这个的答案也会把前两个说清楚)
    在什么时候以及如何默认应用颜色?我的意思是,它是否检查背景是否为默认背景以及哪个类需要这种着色?我尝试查看来自 AppCompatEditText 的来源至 View并没有找到类似的东西

最佳答案

  1. 为什么不呢?通过 getBackground(),您可以检索一个 StateListDrawable,它似乎可以接受滤色器。

  2. 响应焦点是默认行为,以明确当前关注的项目以及键盘输入的去向。您没有重置过滤后的背景;你指向的是原来的那个。

  3. 类存储其默认背景并将滤镜应用于未聚焦 (colorControlNormal) 和聚焦 (colorControlActivated) 状态。如果您更改它,那么它会更改并且过滤器会消失。

关于android - EditText 底线颜色在焦点上变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com