5

在我当前的项目中,我需要迭代 StateListDrawable 中的每个子可绘制对象。

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

public Drawable getStateDrawable(int index)

但是这个方法的注解是@hide,这意味着我不能使用它。

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

4

1 回答 1

5

这是一个相当古老的问题,所以现在帮助你可能为时已晚,但为了其他任何发现它的人,我能够用这段代码做到这一点:

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]);
}
于 2013-01-29T02:45:00.750 回答