Android:具有不同alpha值的嵌套线性布局

Posted

技术标签:

【中文标题】Android:具有不同alpha值的嵌套线性布局【英文标题】:Android: Nested linear layout with different alpha value 【发布时间】:2012-12-02 02:32:30 【问题描述】:

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

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

谢谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

是的,就是这样做的。此回复提供了完整的操作方法:***.com/questions/15852122/hex-transparency-in-colors【参考方案2】:

您可以使用this 解决方案解决您的问题。效果很好。

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

【讨论】:

很好的答案,谢谢!【参考方案3】:

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

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

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

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

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

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

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

查看我对自己问题的回答here。

【讨论】:

【参考方案4】:

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

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

透明度代码的完整列表可以找到here

【讨论】:

【参考方案5】:

这可能是迟到的答案

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

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

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

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

</RelativeLayout>

【讨论】:

以上是关于Android:具有不同alpha值的嵌套线性布局的主要内容,如果未能解决你的问题,请参考以下文章

Android LinearLayout线性布局详解

android,线性布局1,里面嵌套线性布局2(垂直排列),想让2在1里是垂直居中的,怎么搞?

如何在嵌套线性布局中使 imageButton 的高度占屏幕尺寸的 25%。 Android XML 横向布局

加载具有与其 UICollectionView 不同的 alpha 值的 UICollectionViewCell

Android studio 线性布局

如何使用 SwiftUI 创建具有 alpha 值的颜色?