4

余白があり、角が丸く、アルファ値が 0.3 の長方形の LinearLayout があります。このレイアウト内には、異なる画像を異なる位置に表示するため、4 つの異なるレイアウトがあります。

私の問題は、プライマリ レイアウトは 0.3 ですが、子供を完全に表示したい、または親アルファの影響を受けないようにしたいのですが、どうすればそれを行うことができるのでしょうか? 子レイアウトで alpha=1 を設定しようとしましたが、うまくいきませんでした。ただし、0に設定すると、子のレイアウトが消えてしまうため、0.3未満に減らすことはできますが、親の上には何も減らすことができないようです。それはバグですか、それとも間違っていますか?

ありがとうございました。

4

5 に答える 5

15

私は実際にそれを理解しました!色は AARRGGBB であるため、アルファ チャネル (AA) を変更すると、現在の背景にのみ影響し、子には影響しません! 別の解決策がある場合は、それを聞いてうれしいです。ありがとう!

于 2012-12-14T04:45:29.383 に答える
1

子ビューが親背景の影響を受けないようにするには ...

真実: alpha-255 以外の「色」は、実際には色ではありません - それは単なる色合いです!

したがって、子ビューの背景の知覚される外観は、次のいずれかです。 (a)その色がアルファ 255 の場合、child.setBackgroundColor()
によって指定された正確な色、または (b) child.setBackgroundColor()と親背景の合成それ以外は。

したがって、子の背景を完全に制御するには (親を完全に無視して)、選択した色合いと選択した alpha-255 背景の合成となる 3 番目の色を作成する必要があります。

背景を指名する必要があります。(定義上、色合いは背景に対してのみレンダリングできます。明示的に指定されていない場合、テーマの背景が最終的に作用します。)

このコードを見つけるのに数か月かかりましたが、完璧な結果が得られています。

childView.setBackgroundColor(ColorUtils.compositeColors(yourTint, yourBackground);

ここで私自身の質問に対する私の答えを参照してください。

于 2017-01-14T21:40:46.580 に答える