我有一个矩形 LinearLayout,它有一些边距、一些圆角和 0.3 的 alpha 值。在这个布局中,我有 4 种不同的布局,因为我在不同的位置显示不同的图像。
我的问题是,虽然主要布局是 0.3,但我希望我的孩子完全可见,或者不受其父 alpha 的影响,我想知道我该怎么做?我尝试在子布局上设置 alpha=1 但它不起作用。将其设置为 0 确实会使子布局消失,所以看起来我可以减少到 0.3 以下,但不能超过父级。请问这是一个错误还是我做错了?
谢谢你。
我真的想通了!颜色是 AARRGGBB,所以修改 alpha 通道 (AA) 只会影响当前背景,而不影响子元素!如果有其他解决方案,我很高兴听到它。谢谢!
您可以使用此解决方案解决您的问题。它工作完美。
parentView.getBackground().setAlpha(128); //your parent view's visibility is now %50 and child view's visibility remains same.
为了防止子视图受到其父背景的影响...
真相:非 alpha-255 的“颜色”实际上并不是一种颜色——它只是一种色调!
因此:子视图背景的感知外观是: (a)当该颜色具有 alpha-255 时由child.setBackgroundColor()
指定的确切颜色或:
(b) child.setBackgroundColor()和父背景的组合否则。
因此,要完全控制子背景(完全不考虑父背景),您必须构建第三种颜色,它将是您选择的色调和您选择的 alpha-255 背景的复合颜色。
你必须提名一个背景!(根据定义,只能在背景上渲染色调。如果没有明确指定,主题背景最终将发挥作用。)
这段代码花了几个月的时间才找到,并给出了完美的结果。
childView.setBackgroundColor(ColorUtils.compositeColors(yourTint, yourBackground);
在此处查看我对自己问题的回答。
如果您只想将 alpha 设置为父父布局并且不希望将其转换为它的子视图。使用添加了透明度代码的十六进制颜色。
例如,假设您的 Linearlayout 的背景颜色是#FF0022,并且您想将其不透明度设置为 82%,然后将 D1 添加到您的十六进制代码并使用 #D1FF0022 十六进制代码作为您的视图组背景,其中 D1 是不透明度为 82 的参数%
透明度代码的完整列表可以在这里找到
这可能是迟到的答案
但是试试下面的代码,我希望你能得到你需要的
<?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>