Игнорировать фон родительского просмотра?

В реальном мире пример макета панели управления (ниже) отображается в собственном FrameLayout (контейнер фрагментов) и (в зависимости от того, запущено ли приложение на планшете) рядом с картой, цвета которой задаются палитрой цветов, запускаемой ' цветные кнопки. (NB: карта и панель управления имеют разный фон.)

По возвращении из палитры связанная частица карты и фон кнопки обновляются новым цветом.

Идея состоит в том, что (как заметил пользователь) цвет кнопки точно соответствует карте.

И, конечно, это не так! (Если выбранный цвет не имеет 255-альфа).

Я знаю, что это «ожидаемое поведение», но есть ли умный (или «хакерский») трюк, который уничтожит родительский фон (только за дочерним элементом 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);        

person Bad Loser    schedule 10.01.2017    source источник


Ответы (1)


Правильнее было бы спросить:

Как совместить цвет фона карты с альфа-каналом 255 с любым другим цветом, чтобы получить новый цвет с альфа-каналом 255, который затем можно применить к кнопке панели управления, чтобы внешний вид кнопки панели управления полностью соответствовал карту, независимо от фона панели управления?

Все идет нормально! (См. android.support.v4.graphics.ColorUtils)

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

См. документ здесь. Источника не было в моем SDK. Мне нужно было получить его здесь.

person Bad Loser    schedule 14.01.2017