【问题标题】:How to make any view background transparent?如何使任何视图背景透明?
【发布时间】:2017-02-24 17:51:30
【问题描述】:

RelativeLayout android:background="@android:color/transparent" 的属性不起作用。我只是想让它的背景透明?

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个:

    android:background="@null"

    【讨论】:

    • 抱歉,它起作用了。不,兄弟,我想要一个透明的背景,这样我的背景活动就会在后面可见。
    • @VivekCoder 抱歉,我不太清楚你的意思。你能给我们看一张问题的图片吗?
    • @Vivek Coder:您能分享一下解决方案吗?我也在努力完成这项工作。
    • @Vivek 你能分享一下解决方案吗?
    【解决方案2】:

    你也可以像这样在你的java文件中设置它:

     view.setBackgroundColor(Color.TRANSPARENT);
    

    【讨论】:

    • Thanx 但是以编程方式设置视图的属性并不好。我需要一个不使用styles.xml 的解决方案。我只想设置背景属性并使其透明但我失败了。
    • RelativeLayout rl = (RelativeLayout) findViewById(R.id.yourrelativelayoutid); rl.setBackgroundColor(Color.TRANSPARENT);
    • 不不不,我们必须通过 style.xml 设置主题,这是唯一的最终解决方案。如果不使用样式,我就无法做到这一点。解决方法如下: 设置为活动的主题为:android:theme="@style/Theme.Translucent" 我们完成了:)
    • 我认为上面会帮助那些像我一样沉迷于这个问题的人——继续编码
    • 当我使用任何其他颜色(比如setBackgroundColor(Color.RED))时,它工作得很好。但是当我将其更改为透明(setBackgroundColor(Color.TRANSPARENT))时,更改颜色大约需要 1 秒。知道为什么会这样吗?
    【解决方案3】:

    试试这个颜色代码

    android:background="#00000000"
    

    【讨论】:

    • 为什么不使用@android:color/transparent #00000000?
    【解决方案4】:

    为你的布局集

    android:background="#00000000"
    

    00 - 红色

    00 - 绿色 00 - 蓝色 00 - Opacity/Alpha....指定透明度

    例如。 :- #FF000050 会给你 50% 透明度的红色

    【讨论】:

    • 是这样吗?我认为 Android 使用前两个作为 alpha (#AARRGGBB),透明度也是十六进制,所以 50% 将是 #7FFF0000。
    • 正如@DavidJohnWelsh 所说,#FF000050 不会为您提供 50% 透明度的红色。
    • 前 2 个是 alpha。
    【解决方案5】:

    试试这个

    android:background="#0000"
    

    【讨论】:

    • 为什么不用@android:color/transparent 代替#0000?
    • 有效的语法是#AARRGGBBAA AA = Alpha RR = Red GG = Green BB = Blue 应该是完全透明的黑色#00000000
    【解决方案6】:

    刚遇到同样的情况。您可以将此主题用于您的活动:

    @android:style/Theme.Translucent
    

    然后设置视图背景颜色

    android:background="@android:color/transparent"
    

    【讨论】:

      【解决方案7】:

      好吧,既然你说你在后台有一个活动,你应该为此使用一个片段。如果您使用的是片段,只需将 thr framelayout 设置为透明背景,或者根本不设置它,我认为这应该也可以,您的片段将位于其他布局之上。

      如果你使用

      getSupportFragmentManager().beginTransaction()
                  .add(R.id.fragment_container, fragment).commit();
      

      然后它只是将它添加到前一个之上,而不是像 .replace() 那样替换它。 如果您希望一个活动在另一个活动之上,这是不可能的,因为一次只能有一个活动。

      【讨论】:

      • 编辑解释。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多