安卓:具有不同透明度值的嵌套线性布局

4

我有一个矩形LinearLayout,拥有一些边距、一些圆角和0.3的透明度。在这个布局中,我有4个不同的布局,因为我要在不同的位置显示不同的图片。

我的问题是,虽然主要布局是0.3,但我希望我的子布局完全可见,或者不受其父布局的影响,请问我该如何实现?我尝试将子布局的alpha设置为1,但没有起作用。将其设置为0确实会使子布局消失,所以似乎我可以将其降低到0.3以下,但不能超过父布局。请问这是一个错误还是我做错了什么?

谢谢。

5个回答

16

我已经想出来了!颜色格式为AARRGGBB,因此修改alpha通道(AA)仅影响当前背景而不影响子元素!如果有其他解决方案,我很乐意听取。谢谢!


1
是的,这就是正确的方法。这个回答提供了完整的操作步骤:https://dev59.com/wmUo5IYBdhLWcg3wrhBD - B-Money

10

你可以用这个解决方案来解决你的问题。它非常有效。

parentView.getBackground().setAlpha(128); //your parent view's visibility is now %50 and child view's visibility remains same. 

1
非常好的回答,谢谢! - user2235615

1
如果您想仅将透明度设置为父级布局,并且不希望它被传递到其子视图中。请使用带有透明度代码的十六进制颜色。

例如,假设您的Linearlayout的背景颜色为#FF0022,并且您想将其不透明度设置为82%,则添加D1到您的十六进制代码中,使用#D1FF0022十六进制代码用于您的viewgroup背景,其中D1是透明度为82%的参数

完整的透明度代码列表可以在这里找到


1
为了防止子视图受到其父视图背景的影响...
事实:非 alpha-255 的“颜色”实际上并不是一种颜色 - 它只是一种色调!
因此:子视图背景的感知外观是:
(a) 当该颜色具有 alpha-255 时,由 child.setBackgroundColor() 指定的确切颜色或者:
(b) 其他情况下,由 child.setBackgroundColor() 和父视图背景组合而成。
因此,要绝对控制子视图背景(完全忽略父视图),您必须构造第三种颜色,该颜色将是您选择的色调和选择的 alpha-255 背景的组合。
必须指定一个背景!(根据定义,色调只能针对背景进行渲染。如果未明确指定,则最终会使用主题背景。)
这段代码花费了数月时间才找到,并且效果完美。
childView.setBackgroundColor(ColorUtils.compositeColors(yourTint, yourBackground);

看看我对自己的问题的回答这里


0

这可能是一个晚回答

但是尝试下面的代码,我希望你能得到你需要的东西

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/aa"    //Your own Image in root element
android:orientation="vertical" >

  <RelativeLayout
    android:id="@+id/RLMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#CCFFFFFF" >   //Your Alpha Value

    <ImageView
        android:id="@+id/iv1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="86dp"
        android:src="#FF0000" />        //Your Child Image

</RelativeLayout>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接