1

私のアプリには、フォーカスと通常の 2 つの状態があるはずのシーク バーがあります。

プログレスドローアブルの場合も、次のようにxmlで通常の画像を設定しました-

<SeekBar
    android:id="@+id/bar"
    android:layout_width="315dp"
    android:layout_height="10dp"
    android:layout_marginLeft="114dp"
    android:layout_marginTop="210dp"
    android:max="60"
    android:progressDrawable="@drawable/bar_normal"
    android:thumb="@null" />

そして、これがプログレスドローアブルに使用するxmlです

bar_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/black"/>

    <item android:id="@android:id/secondaryProgress">
        <clip android:drawable="@drawable/black" />
    </item>

    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/grey" />
    </item>

</layer-list>

ユーザーがこのシークバーに触れると、進行状況のドローアブルをオレンジ色に変更したい

このために私は別のxmlを使用し、私のコードではこのように書きます

seekBar.setProgressDrawable(getResources().getDrawable(R.drawable.bar_focused));

bar_focused.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/black"/>

    <item android:id="@android:id/secondaryProgress">
        <clip android:drawable="@drawable/black" />
    </item>

    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/orange" />
    </item>

</layer-list>

最初はバーは問題なく表示され、進行状況は灰色と背景で示され、2 番目の進行状況は黒色で示されますが、シークバーをタッチしてオレンジ色にすると、バー全体が黒くなります。正常に動作していますが、オレンジ色が見えません。

4

1 に答える 1

0

状態を使用してドローアブルを変更してはなりません。Os に任せてください。Android のデフォルトのシークバー ドローアブルは次のとおりです。

    <item android:state_pressed="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_pressed" />

    <item android:state_focused="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:state_selected="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:drawable="@drawable/seek_thumb_normal" />

</selector>

Ps: ドローアブルがイメージであるか、xml で定義されている場合は違いはありません (bar_drawable.xml):

<item android:state_pressed="true"
      android:state_window_focused="true"
      android:drawable="@drawable/bar_focused" />

<item android:state_focused="true"
      android:state_window_focused="true"
      android:drawable="@drawable/bar_focused" />

<item android:state_selected="true"
      android:state_window_focused="true"
      android:drawable="@drawable/bar_focused" />

<item android:drawable="@drawable/bar_normal" />

于 2012-09-26T09:41:02.017 に答える