私はマテリアル デザインと CollapsingToolbarLayout を使用しており、フラグメントの 1 つで半透明のステータス バーを使用したいと考えています。私は AppTheme で MainActivity を持っています (style.xml の半透明のステータス バーとオーバーレイは false です)。私は Fragment1 と Fragment2 を持っています。Fragment1 は半透明のステータス バーを持つべきではありません。primaryDarkColor では通常どおりです。ただし、Fragment2 では、トランスルーセント ステータス バーをプログラムで有効にする必要があります。私はこの方法でそれを達成しました:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Making status bar transparent
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = getActivity().getWindow(); // in Activity's onCreate() for instance
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
再び Fragment1 に戻ると、ステータス バーが非表示になっています。トランスルーセント ステータス バーの onPause() または onStop() を無効にする必要があると思います。しかし、プログラム的にそれを行う方法がわかりません。助言がありますか?