1

在我的应用程序中,我有一个搜索栏,它应该有两种状态——专注和正常

也不是为了进度可绘制,我已经像这样在 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>

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

4

1 回答 1

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:如果你drawable是图像或在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 回答