在我当前的项目中,我需要迭代StateListDrawable中的每个子drawable。

在StateListDrawable.java的源代码中,我找到了一个方法:

公共(public)Drawable getStateDrawable(int索引)

但是此方法的注释为@hide,这意味着我无法使用它。

那么,有没有其他方法可以实现这一目标呢?

最佳答案

现在这是一个相当老的问题,因此为您提供帮助可能为时已晚,但是为了其他找到它的人,我可以使用以下代码来做到这一点:

final DrawableContainer parentDrawable = (DrawableContainer) drawable;
final DrawableContainerState containerState = (DrawableContainerState) parentDrawable.getConstantState();
final Drawable[] children = containerState.getChildren();
for (int i = containerState.getChildCount(); i > 0; --i) {
    doStuff(children[i - 1]);
}

10-08 10:59