1. ホーム
  2. android

[解決済み] アクティビティスタイルのwindowBackgroundとbackgroundの違いは何ですか?

2022-03-01 17:03:42

質問

スタイルで"android:background"パラメータを使用し、アプリケーションのテーマがこのスタイルにリンクするように設定して、アプリのすべてのアクティビティの背景を設定しています。

しかし、項目のリストを持つダイアログでは、各項目が背景のフルサイズになることに気がつきました。

使用されているパラメータを "android:windowBackground" に変更したら、この場合も正常に動作するようになったようです。

なぜ発生するのでしょうか?何が違うのでしょうか?

また、andquot:windowBackground" を @null に設定すると、以下のようになります。 ここに書かれている は、"android:background"を使用するのと同じスピードアップを提供するのでしょうか?

解決方法は?

android:background はビューコンポーネントの背景色(正確には描画可能)であるのに対し android:windowBackground は、ビューが存在するウィンドウ(アクティビティまたはダイアログ)の背景色です。

デフォルトでは、ビューは透明(すなわち、背景色なし)なので、視覚的には、下にあるウィンドウから色を取っているように見えます。

リンク先の記事で windowBackground をフルスクリーンビューの背景ではなく、nullに設定します。これは、過剰描画を避けるための一般的なテクニックです。

しかし、一方のビューがもう一方のビューを完全に隠している場合、同じ原理をビューに適用することができます。

gist.github.com/floatingmonkey/5474959