ProgressBarをカスタマイズする


普通のProgressBarの置き方

ProgressBar のスタイルを ?android:progressBarStyleHorizontal に設定する。

<ProgressBar
    style="?android:progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

カスタマイズしたProgressBarの置き方

android:id/backgroundandroid:id/progressandroid:id/secondaryProgress を含む <layer-list> Drawableを作成し、android:progressDrawable に設定する。

<ProgressBar
    style="?android:progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@drawable/progress" />
res/drawable/progress.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <!-- 背景 -->
  <item android:id="@android:id/background">
    <color android:color="#000" />
  </item>

  <!-- android:secondaryProgress用のDrawable -->
  <item android:id="@android:id/secondaryProgress">
    <clip>
      <color android:color="#9f00" />
    </clip>
  </item>

  <!-- android:progress用のDrawable -->
  <item android:id="@android:id/progress">
    <clip>
      <color android:color="#f00" />
    </clip>
  </item>

</layer-list>

上記例ではシンプルに一色を指定しているが、Bitmapや9patchを使ってより複雑な見た目にすることも可能。

実行例

中央の赤いバーが例の res/drawable/progress.xml でカスタマイズしたProgressBar。 android:minHeight="4dp" も指定している。