web-dev-qa-db-ja.com

android

アプリケーションのステータスバーの色を動的に設定する方法。ステータスバーの色をスワイプしながら(水平に)ビューページャーを使用し、タイトルバーとボタンの色を変更する必要があります。コードのタイトルとボタンの色が完全に変化するので、問題は配列リストから次の色を取得するステータスバーの色です。その問題を修正する方法は誰でも私を助けることができます。これが私のコードです

 private int[] colors = new int[]{0xffffd200, 0xff37beb7, 0xff00ccff, 0xff8585c1, 0xfff2a03c, 0xff2a80b9, 0xfff15972,
        0xffe9776c, 0xff9dcc96,0xff76c069};

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
        Window window = ((Activity) context).getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

        int coloring = position % colors.length;
        int new_color = colors[coloring];
        window.setStatusBarColor(new_color);
        title_bar.setBackgroundColor(new_color);
        set_share.setBackgroundColor(new_color);

    }
    else{

        int color = position % colors.length;
        itemView.setBackgroundColor(colors[color]);
        title_bar.setBackgroundColor(colors[color]);
        set_share.setBackgroundColor(colors[color]);
    }
10
developer

ステータスバーの色を変更するには、setStatusBarColor(int color)を使用します。 javadocによると、ウィンドウにいくつかのフラグを設定する必要もあります。

コードのスニペット:

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));

これは次のリファレンスから取得されます: ステータスバーの色を変更してLollipopのアプリと一致させる方法?[Android]

14
androgo

ステータスバーの色になると、APIレベルが21を超えるデバイスにのみ追加できます。この条件を満たすデバイスに対して、以下に示すようにステータスバーの色を動的に変更できます。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
        window.setStatusBarColor(getResources().getColor(R.color.Statusbar));
    }
7
aravindkanna

ステータスバーの色を設定したいとき、私は https://github.com/jgilfelt/SystemBarTint を使用しました

私はそれをそのように使用しました:

public static void colorStatusBar(Window window, Activity activity) {
    Log.v(Constants.LOG_TAG, "Start defining color bar status");
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KitKat) {      
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        SystemBarTintManager tintManager = new SystemBarTintManager(activity);
        tintManager.setStatusBarTintEnabled(true);

        tintManager.setTintColor(activity.getResources().getColor(R.color.colorPrimaryDark));
    }
}

ただし、ステータスバーの色を設定できるのは、アプリがAPI> = 19の電話で実行されている場合のみです。

2
ImpSy