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

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

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

谢谢。

【问题讨论】:

    标签: android layout opacity alpha


    【解决方案1】:

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

    【讨论】:

    【解决方案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_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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-09
          • 1970-01-01
          • 2021-04-12
          相关资源
          最近更新 更多