SeekBar拇指表示drawables无法正常工作,也没有动画

时间:2016-06-24 19:27:06

标签: android seekbar android-seekbar

我正在为Android API 16+工作,在API 21设备上进行测试。 我以编程方式使用SeekBar。我在XML中定义了以下拇指Drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true">
      <shape android:shape="oval">
         <solid android:color="@color/my_red" />
         <size android:width="18dp" android:height="18dp" />
      </shape>
   </item>
   <item android:state_selected="true">
      <shape android:shape="oval">
         <solid android:color="@color/my_red" />
         <size android:width="12dp" android:height="12dp" />
      </shape>
   </item>
   <item android:state_focused="true">
      <shape android:shape="oval">
         <solid android:color="@color/my_red" />
         <size android:width="10dp" android:height="10dp" />
      </shape>
   </item>
   <item> <!-- state_default -->
      <shape android:shape="oval">
         <solid android:color="@color/my_red" />
         <size android:width="0dp" android:height="0dp" />
      </shape>
   </item>
</selector>

我使用SeekBar.setProgressDrawable应用此drawable。发生的事情是拇指正确使用默认状态drawable(据我所知,拇指没有显示)但永远不会改变。我尝试使用setSelectedrequestFocus并只是拖动拇指,但它没有改变。

我错过了什么?

编辑:根据@pskink的建议,我更改了我的XML以尝试此操作:

seekbar_thumb_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">
   <solid android:color="@color/my_red" />
   <size android:width="20dp" android:height="20dp" />
</shape>

seekbar_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true">
      <inset android:drawable="@drawable/seekbar_thumb_shape"
             android:insetTop="0dp"
             android:insetRight="0dp"
             android:insetBottom="0dp"
             android:insetLeft="0dp" />
   </item>
   <item android:state_selected="true">
      <inset android:drawable="@drawable/seekbar_thumb_shape"
             android:insetTop="5dp"
             android:insetRight="5dp"
             android:insetBottom="5dp"
             android:insetLeft="5dp" />
   </item>
   <item android:state_focused="true">
      <inset android:drawable="@drawable/seekbar_thumb_shape"
             android:insetTop="5dp"
             android:insetRight="5dp"
             android:insetBottom="5dp"
             android:insetLeft="5dp" />
   </item>
   <item> <!-- state_default -->
      <inset android:drawable="@drawable/seekbar_thumb_shape"
             android:insetTop="10dp"
             android:insetRight="10dp"
             android:insetBottom="10dp"
             android:insetLeft="10dp" />
   </item>
</selector>

结果非常随机。我也期待一个小动画发生,就像默认的SeekBar动画一样,但它只是粗暴地改变了drawable。

我的目标只是重现一个贴近YouTube Android应用程序的SeekBar。

0 个答案:

没有答案