如何改变搜索栏中拇指的颜色?

ver*_*one 19 xml android seekbar

我的seekbarAndroid应用程序中有默认值.我注意到,当thumbseekbar举行,它变成黄色.相反,我希望它在持有时变成蓝色.如何才能做到这一点?如果这是一个基本问题我很抱歉,我是android开发的新手.谢谢.

zav*_*ych 30

使用图像过滤器更改默认State List Drawables(包括SeekBar)的颜色:

  // Change seekbar color to green.
  SeekBar sb = (SeekBar) findViewById(R.id.seekBar1);
  sb.getProgressDrawable().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
  sb.getThumb().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
Run Code Online (Sandbox Code Playgroud)

该方法getThumb仅在API 16+(Jelly Bean)之后可用.

  • 在我的例子中发现它更好用`sb.getProgressDrawable().setColorFilter(getResources().getColor(R.color.my_color),PorterDuff.Mode.SRC_ATOP);` (12认同)
  • @CrimsonX你应该添加这个作为答案. (2认同)

小智 21

无需额外的造型.Android通过xml支持它.只需在搜索栏中添加android:thumbTint ="@ color/yourColor"即可.

例如.

<SeekBar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:max="100"
     android:thumbTint="@color/red"
     android:progress="0" />
Run Code Online (Sandbox Code Playgroud)

  • api <21怎么样? (11认同)
  • @JohnShelley这适用于使用AppCompat主题的所有API级别...在styles.xml中:`<style name ="AppTheme.BlueSeekBar"parent ="Widget.AppCompat.SeekBar"> <item name ="colorAccent"> @ color/red </ item> </ style>`在布局中:`<SeekBar android:layout_width ="match_parent"android:layout_height ="wrap_content"android:theme ="@ style/AppTheme.BlueSeekBar"/>` (2认同)

Tan*_*.7x 18

如果您不喜欢默认的拇指,则必须创建自己Drawable的拇指,然后可以使用以下内容在代码中设置拇指:

Drawable thumb = getResources().getDrawable( R.drawable.myThumb );
SeekBar mSeekBar = (SeekBar) findViewById(R.id.mySeekBar);
mSeekbar.setThumb(thumb);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用以下方式在XML中设置拇指:

<SeekBar 
    ...
    android:thumb="@drawable/seek_thumb" />
Run Code Online (Sandbox Code Playgroud)

实际的Drawable可以是您可能想要的图像,形状或任何其他类型的Drawable.如果您希望拇指在按下时更改外观,您将需要创建一个State List Drawable.