web-dev-qa-db-ja.com

アルファ透明度をレイアウトのみに設定し、その子には設定しない

私はこの質問を見つけましたが、ほぼ同じ問題があります。相対レイアウトにのみアルファを適用し、その子には適用しない方法を教えてください。誰か助けてもらえますか?

長方形のLinearLayoutがあり、マージンがあり、角が丸く、アルファ値が0.3です。このレイアウトの内部には、異なる位置に異なる画像を表示するため、4つの異なるレイアウトがあります。私の問題は、プライマリレイアウトは0.3ですが、子供が完全に見えるようにしたい、または親アルファの影響を受けないようにしたいということです。どうすればそれをどうすればよいのでしょうか。子レイアウトにalpha = 1を設定しようとしましたが、機能しませんでした。これを0に設定すると、子のレイアウトは表示されなくなります。したがって、0.3未満に減らすことはできますが、親より上には何もできません。それはバグですか、それとも間違っていますか?ありがとうございました。

23
Alin

親の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>
34
stinepike