【问题标题】:Apply alpha gradient to whole ViewGroup将 alpha 渐变应用于整个 ViewGroup
【发布时间】:2016-03-29 11:29:58
【问题描述】:

我试图在 ViewGroup 上制作渐变 Alpha。

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

我需要将 alpha 应用于整个视图,包括子视图。

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

_relativeLayout.setAlpha(1);

如果我设置了背景渐变 alpha,它不适用于子视图。

我怎样才能获得相同的效果但使用渐变?

提前致谢。

【问题讨论】:

  • 覆盖您的自定义ViewGroupdispatchDrawdraw 方法
  • 我应该在那里做什么?它也会将 alpha 应用于其子视图吗?
  • stackoverflow.com/questions/31135714/…,我向codeshare.io发送了一些代码,但它现在似乎已经关闭(codeshare.io/ZQHcj)或者它可能永远死了,我不知道
  • 我当然可以再写一次,但你知道我有时太懒了......也许你可以问那个问题的原始海报(Ov3r1oad)如果他还有那个代码......跨度>
  • 如果它真的有效,你的代码应该是那个问题的答案(仍然没有答案)。

标签: android gradient alpha


【解决方案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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2017-08-11
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多