web-dev-qa-db-fra.com

Définissez la transparence alpha uniquement sur la mise en page et non sur ses enfants

J'ai trouvé cette question et j'ai presque le même problème. Comment pourrais-je appliquer l'alpha uniquement à une disposition relative et non à ses enfants? Quelqu'un pourrait-il aider?

J'ai un LinearLayout rectangulaire qui a une marge, des coins arrondis et une valeur alpha de 0,3. À l'intérieur de cette mise en page, j'ai 4 mises en page différentes car j'affiche différentes images dans différentes positions. Mon problème est que, bien que la disposition principale soit de 0,3, je veux que mon enfant soit entièrement visible ou non affecté par son parent alpha, et je me demande comment je peux le faire s'il vous plaît? J'ai essayé de mettre alpha = 1 sur les mises en page des enfants mais cela n'a pas fonctionné. Si vous le définissez sur 0, la disposition des enfants disparaîtra, il semble donc que je puisse réduire en dessous de 0,3 mais pas au-dessus du parent. Est-ce un bug ou je me trompe s'il vous plaît? Je vous remercie.

23
Alin

Au lieu de définir le alpha du parent, vous pouvez utiliser FrameLayout et définir d'abord une image d'arrière-plan et définir le alpha de cet enfant. Par exemple

Au lieu d'utiliser cela

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

Utilisez celui-ci

<FrameLayout>
    <ImageView
        Android:background="@drawable/background" 
        Android:alpha="0.3" />
    <LinearLayout>
        <Button />
        <Button />
    </LinearLayout>     
</FrameLayout>
34
stinepike