Подтвердить что ты не робот

Установите альфа-прозрачность только для макета, а не для детей

Я нашел этот вопрос, и у меня почти такая же проблема. Как я могу применить альфа только к относительной компоновке, а не к ней? Может ли кто-нибудь помочь?

У меня есть прямоугольный LinearLayout, который имеет некоторый запас, некоторые круглые углы и альфа-значение 0,3. Внутри этого макета у меня есть 4 разных макета, поскольку я показываю разные изображения в разных положениях. Моя проблема в том, что, хотя основной макет равен 0,3, я хочу, чтобы мой ребенок был полностью видимым или не затронутым им родительской альфа, и мне интересно, как я могу это сделать, пожалуйста? Я попытался установить альфа = 1 на макеты детей, но это не сработало. Если установить его на 0, это приведет к тому, что макет детей исчезнет, ​​поэтому я могу уменьшить ниже 0,3, но не над чем-то выше родителя. Это ошибка, или я делаю это неправильно? Спасибо.

4b9b3361

Ответ 1

Вместо установки alpha родителя вы можете использовать FrameLayout и сначала установить фоновое изображение и установить alpha этого дочернего элемента. Например

Вместо этого

<LinearLayout 
        android:background="@drawable/background" 
        android:alpha="0.3" >
    <LinearLayout>
        <Button />
        <Button />
    </LinearLayout>     
</LinearLayout >

Используйте этот

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