サンプルプロジェクトとして、おしゃれな電卓アプリを作ろうとていたときに、半透明(Translucent
)でなく、完全透明(Transparent
)なステータスバーがほしいかったのだけど、意外とハマったので紹介します。GoogleでTransparentで検索しているのに、Translucentにする方法ばかりが検索にひっかりなかなか正解にたどり着けなかったです。
完成形は下記です。
今回minSdkVersion 21
としているので、下位バージョンのやり方は調べていません。(19だと絶対にやり方違うので、このあたりはほんとに骨が折れます。)
さて、早速回答ですが、下記です。
1 2 3 4 5 6 7 8 |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(android.R.id.content).setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); } |
1 2 3 4 5 6 7 |
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) findViewById<View>(android.R.id.content).systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE } |
上記に加えて、
1 2 3 4 5 6 7 8 9 |
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> |
res/value/styles.xml
のアプリのテーマに、android:statusBarColor
で透明色を設定するとステータスバーが透明になると思います。
お試しください。