首页 > 解决方案 > 了解 View.drawableStateChanged

问题描述

谁能解释一下何时调用View.drawableStateChanged?我想将它与ViewGroup.setAddStatesFromChildren结合使用以实现完整的“光学”聚焦,这ViewGroup意味着例如当其中一个获得焦点时更改背景颜色。EditTextViewGroup

当我实现View.drawableStateChanged它经常被调用时,我怎么知道当前调用是我关心的那个?设置焦点侦听器在子视图上的优势是什么?

标签: androidandroid-layout

解决方案


您可以在此处了解更多信息。

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_focusedstate_enabled。如果您已将 drawable 设置为特定视图并且该视图是可点击的,那么当您单击该视图时,此状态通常会发生变化。

您可以使用它setOnFocusChangeListener来检查焦点变化和setOnTouchListener触摸事件。此外,您可以检查以启用/禁用该onClick()视图的状态事件。

更新:此方法已弃用,请点击此链接了解更多信息。


推荐阅读