web-dev-qa-db-ja.com

Androidの不確定な円の進行状況バーは、colorAccent色にもかかわらず、白です

API-21の不確定な円の進行状況バーの色を変更する方法がわかりません。 colorAccentが正しく設定されていることを確認しました。私の理解では、システムはcolorAccentから取得し、それに応じてProgressBarに色を付ける必要があります。何が間違っているのでしょうか?

app/src/main/res/layout-v21/fragment_story_comments.xml

<ProgressBar
        Android:id="@+id/progress_bar"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:visibility="visible"/>

app/src/main/res/values/themes.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="Android:windowNoTitle">true</item>
</style>

app/src/main/res/values/colors.xml

<color name="colorAccent">#ff5722</color>
<color name="colorPrimary">#ff5722</color>
<color name="colorPrimaryDark">#e64a19</color>
32
burntcookie90

注:これは、元のリクエストに従ってAndroid 5.0(Lollipop)以上でのみ動作します。古いバージョンの場合Android ProgressBarのprogressDrawableを置き換えます。

Liamの答えを拡張して、indeterminateTintフラグを使用して、XMLでこれを機能させることができました。

どうやらそれを動作させるには、indeterminateおよびindeterminateTintModeフラグを設定する必要があります。

このモードは私にとってはちょっとした謎です。すべて試してみましたが、src_inとsrc_atopでのみ期待した結果が得られました。これらのモードが実際に何をするのかわかりませんので、これを拡張できる人がいれば感謝します。

いずれにせよ、これは動作するはずです:

<ProgressBar
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:indeterminate="true"
    Android:indeterminateTint="#F00"
    Android:indeterminateTintMode="src_in" />
85
Cachapa

これは、Androidの下位バージョンでも機能します。

if (progBar.getIndeterminateDrawable() != null) {
        progBar.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.accent), Android.graphics.PorterDuff.Mode.SRC_IN);
}
20
bapho

API 21のProgressBarの色をプログラムで緑から白に次のように変更できました。

mProgressBar.getIndeterminateDrawable().setColorFilter(new LightingColorFilter(0xFF000000, 0xFFFFFF));

ただし、XMLでそれを行う方法はまだわかりませんが、これが誰かの助けになることを願っています。

11
Liam Cottle

テーマのアクティブ化されたコントロールの色を設定する必要があります。

 <item name="colorControlActivated">@color/accent</item>

これは、Android 5.0+

6
Andriy Druk