忽略父查看背景?

时间:2017-01-10 22:20:01

标签: android android-layout alpha-transparency

在现实世界中,示例控制面板布局(下方)显示在其自己的FrameLayout(片段容器)中,并且(取决于应用程序是否在平板电脑上运行)与地图一起显示,其颜色由颜色选择器设置通过'颜色'按钮。 (注意:地图和控制面板有不同的背景。)

从颜色选择器返回时,关联的地图粒子和按钮背景将使用新颜色进行更新。

这个想法是(如用户所观察到的)按钮的颜色与地图完全匹配。

当然,它没有! (除非拾取的颜色有255-alpha)。

我知道这是'预期的行为'但是有一个聪明的(或'hacky')技巧会消除父背景(仅在Button子背后),以便正确渲染子背景颜色?

示例控制面板布局和代码

<LinearLayout android:id="@+id/settingsLL"
    android:orientation="vertical">
    <LinearLayout android:id="@+id/oneOfMany"
        android:orientation="horizontal">
        <TextView style="@style/wptedit_title" android:text="[some title]" />
        <Button style="@style/wptedit_color" android:id="@+id/colorBtn" />
    </LinearLayout>
</LinearLayout> 

// Control panel background
settingsLL.setBackgroundColor(0xFFD5FFDD);      
// Faint red tint gives desired map background not reflected by button
colorBtn.setBackgroundColor(0x04FF0000);        

1 个答案:

答案 0 :(得分:1)

更好的问题是:

如何将地图的alpha-255背景颜色与任何其他颜色组合以产生新的alpha-255颜色,然后可以将其应用于控制面板按钮,以便控制面板按钮的外观完全对应地图,与控制面板背景无关?

到目前为止,真好! (参见android.support.v4.graphics.ColorUtils)

colorBtn.setBackgroundColor(ColorUtils.compositeColors(pickedColor, mapBackgroundColor);

有关doco的信息,请参阅here。 源代码不在我的SDK中。我必须得到它here