4

我有一个矩形 LinearLayout,它有一些边距、一些圆角和 0.3 的 alpha 值。在这个布局中,我有 4 种不同的布局,因为我在不同的位置显示不同的图像。

我的问题是,虽然主要布局是 0.3,但我希望我的孩子完全可见,或者不受其父 alpha 的影响,我想知道我该怎么做?我尝试在子布局上设置 alpha=1 但它不起作用。将其设置为 0 确实会使子布局消失,所以看起来我可以减少到 0.3 以下,但不能超过父级。请问这是一个错误还是我做错了?

谢谢你。

4

5 回答 5

15

我真的想通了!颜色是 AARRGGBB,所以修改 alpha 通道 (AA) 只会影响当前背景,而不影响子元素!如果有其他解决方案,我很高兴听到它。谢谢!

于 2012-12-14T04:45:29.383 回答
10

您可以使用解决方案解决您的问题。它工作完美。

parentView.getBackground().setAlpha(128); //your parent view's visibility is now %50 and child view's visibility remains same. 
于 2014-02-19T23:09:23.263 回答
1

为了防止子视图受到其父背景的影响...

真相:非 alpha-255 的“颜色”实际上并不是一种颜色——它只是一种色调!

因此:子视图背景的感知外观是: (a)当该颜色具有 alpha-255 时由child.setBackgroundColor()
指定的确切颜色或: (b) child.setBackgroundColor()和父背景的组合否则。

因此,要完全控制子背景(完全不考虑父背景),您必须构建第三种颜色,它将是您选择的色调和您选择的 alpha-255 背景的复合颜色。

必须提名一个背景!(根据定义,只能在背景上渲染色调。如果没有明确指定,主题背景最终将发挥作用。)

这段代码花了几个月的时间才找到,并给出了完美的结果。

childView.setBackgroundColor(ColorUtils.compositeColors(yourTint, yourBackground);

在此处查看我对自己问题的回答。

于 2017-01-14T21:40:46.580 回答
1

如果您只想将 alpha 设置为父父布局并且不希望将其转换为它的子视图。使用添加了透明度代码的十六进制颜色。

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

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

于 2021-01-10T11:12:27.383 回答
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>

于 2015-11-28T03:59:50.753 回答