web-dev-qa-db-ja.com

無期限のプログレスバーの色を変更するにはどうすればよいですか?

次のスタイルのプログレスバーがあります:style="?android:attr/Android:progressBarStyleSmall"

悲しいことに、バーはほぼ白で、私の場合は白い背景に表示されます。そのため、プログレスバーはほとんど見えません。

プログレスバーの色を変更するにはどうすればよいですか?濃い灰色がいいでしょう。

21
Janusz

バーがその色である理由は、選択したスタイルによるものです。これは固定スタイルであり、UI要素の生成にシステムテーマを使用します。

ここ のソースコードを見てください。このprogressBarStyleSmall属性は、定義されたスタイルを使用します ここ

<style name="Widget.ProgressBar.Small">
    <item name="Android:indeterminateDrawable">@Android:drawable/progress_small_white</item>
    <item name="Android:minWidth">16dip</item>
    <item name="Android:maxWidth">16dip</item>
    <item name="Android:minHeight">16dip</item>
    <item name="Android:maxHeight">16dip</item>
</style>

Androidソースコードの例に従ってカスタムスタイルを作成するだけです。Android:indeterminateDrawableを必要なものに置き換える必要があります。

10
Prashast
progressBar.getIndeterminateDrawable().setColorFilter(
            getResources().getColor(R.color.light_light_purple),
            Android.graphics.PorterDuff.Mode.SRC_IN);

このコードは、デフォルトのホロ不確定の描画可能な色を独自の色に変更します。カラーコードを定義し、R.color.light_light_purpleR.color.your_color_codeに置き換えます。

41
Vishal Pandey

黒のプログレスバーを取得するには、次のいずれかの逆スタイルを使用します。

<ProgressBar style="@Android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@Android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@Android:style/Widget.ProgressBar.Small.Inverse"/>
25
Anm
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
    mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, Android.graphics.PorterDuff.Mode.MULTIPLY);
}
3
Casper-Nodes

色を変えるのにとても苦労しました。それを解決するために、Androidのsrcコードを取得し、独自のProgressBarクラスを実行しました。

最善の答えではありませんが、それは私にとってはうまくいきました。

2
Macarse

そして答えはすでにSOにありました:

stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-Android

Android:indeterminateDrawable属性を使用して、プログレスバーに表示されるドローアブル全体を簡単に変更できます。

2
Janusz

使用するためのメモ

<ProgressBar style="@Android:style/Widget.ProgressBar.Inverse"/> 

または逆プログレスバーのいずれかを使用するには、最小Android sdk要件をレベル4(Android 1.6)に設定する必要があります。

1
ubzack