android - 了解 View.drawableStateChanged
问题描述
谁能解释一下何时调用View.drawableStateChanged?我想将它与ViewGroup.setAddStatesFromChildren结合使用以实现完整的“光学”聚焦,这ViewGroup
意味着例如当其中一个获得焦点时更改背景颜色。EditText
ViewGroup
当我实现View.drawableStateChanged
它经常被调用时,我怎么知道当前调用是我关心的那个?设置焦点侦听器在子视图上的优势是什么?
解决方案
您可以在此处了解更多信息。
View.drawableStateChanged()
每当视图的状态发生变化从而影响正在显示的可绘制对象的状态时都会调用。
如果您像这样创建可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/>
<item android:state_focused="true"
android:color="#ff0000ff"/>
<item android:state_enabled="true"
android:color="#ff00ffff"/>
<item android:color="#ff000000"/>
</selector>
这个drawable主要有不同的状态(比如state_pressed
,,,state_focused
)state_enabled
。如果您已将 drawable 设置为特定视图并且该视图是可点击的,那么当您单击该视图时,此状态通常会发生变化。
您可以使用它setOnFocusChangeListener
来检查焦点变化和setOnTouchListener
触摸事件。此外,您可以检查以启用/禁用该onClick()
视图的状态事件。
更新:此方法已弃用,请点击此链接了解更多信息。
推荐阅读
- javascript - TSLint '类型上不存在属性' VS firefox 调试器行为
- proget - 如何解决 Inedo Hub Proget 安装错误?
- oracle - ora-22060 参数是无效或未初始化的数字
- javascript - 在JS中打印镜像数字三角形
- javascript - 如何使用 Angular 和 ngAnimate 平滑地显示带有背景和文本的块?
- sql - SSIS OLE DB命令中的多个插入语句
- c# - 数据加载在哪里?
- perl - 贝宝模块的问题
- jquery - 获取插入符号所在的每行 contenteditable div 的字符数
- xamarin - 当 NSArray 从本机 ios 层传递到 xamarin 层时,无法确定单运行时的类型