为什么子视图会从父布局继承alpha值

时间:2011-09-13 12:14:01

标签: android layout alpha

在我的应用程序中,我设置了顶级linearlayout的背景图像,然后淡化背景我将其alpha设置为.2但这会产生一个奇怪的问题,因为它还为布局的所有子项设置alpha即使我明确地在孩子们中定义了不同的alpha值。

是否可以设置父级的alpha值而不影响子级的alpha值?

有什么方法可以在顶级视图上设置alpha而不影响该视图中的alpha?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll1" 
    android:orientation="vertical"
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"
    android:gravity="center"
    android:background="@drawable/bg"
    android:alpha="0.2">
        <Button android:id="@+id/btn1" 
            android:text="Set 1"
            android:layout_width="300px"
            android:layout_height="150px" 
            android:layout_gravity="center" 
            android:background="@drawable/button1"
            android:tag="1"
            android:alpha="1"/>
        <Button android:id="@+id/btn2" 
            android:text="Set 2"
            android:layout_width="300px" 
            android:layout_height="150px" 
            android:layout_gravity="center" 
            android:background="@drawable/button2"
            android:tag="2"/>
</LinearLayout>

3 个答案:

答案 0 :(得分:21)

这正是它的工作方式。

为什么不简单地将背景可绘制的“@ drawable / bg”的alpha更改为0.2?

或者,尝试使用此基本结构的FrameLayout:

<FrameLayout>
    <ImageView
        android:background="@drawable/bg" 
        android:alpha="0.2" />
    <LinearLayout>
        <Button />
        <Button />
    </LinearLayout>     
</FrameLayout>

答案 1 :(得分:3)

一种方法是在哈希代码中设置颜色的alpha值,即#RRGGBB而不是#AARRGGBB。这确保了alpha值不会被继承。

答案 2 :(得分:1)

您需要使用framelayout。另外,你的按钮被一个alpha设置的线性布局包围,这也会影响按钮。