以编程方式更改seekbar for drawbar

时间:2012-09-26 09:30:34

标签: android seekbar

在我的应用程序中,我有一个搜索栏,应该有两个状态 - 聚焦和正常

也没有进展可绘制我已经在xml中设置了正常图像 -

 这是我用于进展可绘制的xml

bar_normal.xml

<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>

现在,当用户触摸此搜索栏时,我想将可绘制的进度更改为橙色

为此,我使用另一个xml,在我的代码中我写这个

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

bar_focused.xml

<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>

最初,条形显示正常,进度显示为灰色和背景,次要进度为黑色,但是当我触摸搜索条使其变为橙色时, 整个酒吧变黑了。它的工作仍然很好,但我看不到橙色。

请帮助!

1 个答案:

答案 0 :(得分:0)

你不能使用状态更改drawable,让Os为你做,  android默认的seekbar drawable是:          

    <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" />