我试图在ViewGroup上制作渐变alpha。
我知道我可以使用GradientDrawable,但这只适用于背景。
我需要将alpha应用于整个视图,包括子视图。
就像我可以将alpha设置为viewGroup一样:
_relativeLayout.setAlpha(1);
如果我设置了背景渐变alpha,则它不适用于它的子视图。
我怎样才能获得相同的效果但是使用渐变?
提前致谢。
答案 0 :(得分:1)
您可以实现一个简单的DFS算法来实现它
void setAlphaTransitively(View view, float alpha) {
if (view == null) {
return;
}
view.setAlpha(alpha);
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int index = 0; index < viewGroup.getChildCount(); index++) {
View child = viewGroup.getChildAt(index);
setAlphaTransitively(child, alpha);
}
}
}