了解 View.drawableStateChanged

ste*_*wpf 3 android android-layout

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

当我实现View.drawableStateChanged它经常被调用时,我如何知道当前的调用是我关心的调用?与设置将侦听器聚焦在子视图上相比,有什么优势?

Pri*_*nce 5

您可以在这里了解更多信息。

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>
Run Code Online (Sandbox Code Playgroud)

该可绘制对象主要有不同的状态(如state_pressedstate_focusedstate_enabled)。如果您已将可绘制性设置为特定视图并且该视图是可单击的,那么当您单击该视图时,此状态通常会发生变化。

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

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