注意!
この記事はQiitaにて公開されていた内容をimportしたものです。
これらの内容は場合によっては陳腐化していて役に立たなくなっていたり、有害であったり、現在の著者の主張と異なることがあります。
皆様の判断の上でご利用いただけますと幸いです(度を超してヤバいものは著者に連絡して頂ければ対応します m(_ _)m)
ハマったのでメモ。まぁ無視してもいいんですが。。。 ( Issue 63653 - android - Toast text appears outside its container when fitsSystemWindows is set to true on the theme on android 4.4.2 - Android Open Source Project - Issue Tracker - Google Project Hosting を大雑把にイタコ翻訳しています )
Q. Android 4.4.2のテーマでfitsSystemWindows
をtrueにするとToastの文字がはみ出してしまう
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:fitsSystemWindows">true</item>
</style>
って書いたらToastの文字がはみ出してしまう、こんな感じに!
A. android:fitsSystemWindows
はテーマではなくて、layout xmlで記述するよう意図されています。
themesに書くと、すべてのビューで定義が反映されます。たとえそれが反映してほしくないビューであっても。
なので、テーマではなくてlayout内で定義するようにしてください。
まとめ
<SomeView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- ... -->
</SomeView>
こんなふうに書いてね、ということのようです。
余談
そもそもandroid:fitsSystemWindows
がなぜ必要かというと、ステータスバーやナビゲーションバーを透過する処理を加えた時、これら領域にも描画できるようになるのですが、反面これら領域にボタンなどが表示された状態だとユーザーが押せないので、通常はpaddingなどを使って調整する必要があります。これを便利にやってくれる属性ということになります。
詳しくはyanzmさんの記事を。
国内のアプリ、あまりステータスバー透過を使っているものが多くないので、積極的に使っていきたい!