1

私はマテリアル デザインと 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() を無効にする必要があると思います。しかし、プログラム的にそれを行う方法がわかりません。助言がありますか?

4

2 に答える 2

4

ステータスバーの色を変更するには、 setStatusBarColor(int color).use 以下のコードを使用します

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));
于 2015-11-30T09:03:36.337 に答える