私が構築しているアプリでは、Design Support Libraryを使用しました。を使用するアプリを作成しましたTabLayout
。アプリの小さな機能は、ユーザーがタブを変更するTabLayout
と、 との両方の色がToolbar
対応する色に変わることです。NavigationView
また、ユーザーに Material design を提示するために、新しい を使用していますDrawerLayout
。
TabLayout
ただし、との両方の色を変更することToolbar
はまったく問題ありません。次の行で行います。
String hexColor = String.format("#%06X", (0xFFFFFF & getResources().getColor(R.color.primaryColor)));
getBaseActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor)));
mTabLayout.setBackgroundColor(getResources().getColor(primaryColor));
これはすべて問題なく、想定どおりに機能しています。Status bar
背景を設定しようとすると問題が発生します。マテリアル デザインの仕様では、NavigationDrawer
特別な処理を行う必要があることが示されているため、下の画像はステータス バーが実際に半透明になっている様子を示しています。ナビゲーション ドロワーはメイン フラグメントの上に重なっており、ナビゲーション バーは両方の上にあり、半透明のバーになっています。
私の最初の考えは、それは #7000 の 16 進値のバーか何かであるということでしたが、真実から遠く離れることはできませんでした. それを行っても、「暗く」する必要がある実際の色の色は変わりません。
その後、必要な色の暗いバージョンをステータスバーの背景として設定しようとしました。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getBaseActivity().getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.primaryColor));
}
しかし、これを行った後、完全な機能が壊れます。私のビューは次のようになります。
本質的に、この動作を修正するにはどうすればよいですか? 半透明機能がマテリアル デザインの仕様に従って必要なことを引き続き行うように変更したいのですが、status bar
の背景色も変更します。