次のスタイルのプログレスバーがあります:style="?android:attr/Android:progressBarStyleSmall"
悲しいことに、バーはほぼ白で、私の場合は白い背景に表示されます。そのため、プログレスバーはほとんど見えません。
プログレスバーの色を変更するにはどうすればよいですか?濃い灰色がいいでしょう。
バーがその色である理由は、選択したスタイルによるものです。これは固定スタイルであり、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を必要なものに置き換える必要があります。
progressBar.getIndeterminateDrawable().setColorFilter(
getResources().getColor(R.color.light_light_purple),
Android.graphics.PorterDuff.Mode.SRC_IN);
このコードは、デフォルトのホロ不確定の描画可能な色を独自の色に変更します。カラーコードを定義し、R.color.light_light_purple
をR.color.your_color_code
に置き換えます。
黒のプログレスバーを取得するには、次のいずれかの逆スタイルを使用します。
<ProgressBar style="@Android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@Android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@Android:style/Widget.ProgressBar.Small.Inverse"/>
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, Android.graphics.PorterDuff.Mode.MULTIPLY);
}
色を変えるのにとても苦労しました。それを解決するために、Androidのsrcコードを取得し、独自のProgressBarクラスを実行しました。
最善の答えではありませんが、それは私にとってはうまくいきました。
そして答えはすでにSOにありました:
stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-Android
Android:indeterminateDrawable
属性を使用して、プログレスバーに表示されるドローアブル全体を簡単に変更できます。
使用するためのメモ
<ProgressBar style="@Android:style/Widget.ProgressBar.Inverse"/>
または逆プログレスバーのいずれかを使用するには、最小Android sdk要件をレベル4(Android 1.6)に設定する必要があります。