android - 将 alpha 渐变应用于整个 ViewGroup

标签 android gradient alpha

我正在尝试在 ViewGroup 上制作渐变 alpha。

我知道我可以使用 GradientDrawable,但这只适用于背景。

我需要将 alpha 应用于整个 View ,包括 subview 。

就像我可以为 viewGroup 设置 alpha 一样:

_relativeLayout.setAlpha(1);

如果我设置背景渐变 alpha,它不会应用于它的 subview 。

如何使用渐变获得相同的效果?

提前致谢。

最佳答案

你可以实现一个简单的 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);
        }
    }
}

关于android - 将 alpha 渐变应用于整个 ViewGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36283024/

相关文章:

android - 评论时Facebook登录按钮的宽度,在手机上

android - 来自应用程序上下文的 FragmentManager

python - Pytorch - 如何区分两个参数

c# - PorterDuff.Mode.Multiply 没有按预期工作?黑色背景而不是透明

android - REQUEST_TAKE_PHOTO 和 REQUEST_IMAGE_CAPTURE 之间的区别

android - "ionic build android "给出 ANDROID_HOME 错误

python - 为什么 Tensorflow 无法计算 reshape 参数的梯度?

html - 如何将渐变放在背景图像之上但在文本之下

object - 加工中的透明纹理形状

使用 alphaextract 时出现 FFmpeg 格式错误