在我当前的项目中,我需要迭代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]);
}