我在我的安卓应用中使用了默认的 seekbar
。我注意到当手指按住 seekbar
上的 thumb
时,它会变成黄色。相反,我希望在按住时它变成蓝色。这应该怎么做呢?如果这是一个基本问题,我很抱歉,因为我是新手。谢谢。
使用图像过滤器来改变默认状态列表可绘制对象(包括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);
getThumb
方法只能在 API 16+(Jelly Bean)及以上版本中使用。
无需额外的样式设计,安卓可以通过XML支持它。只需在您的SeekBar中添加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" />
<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" />
- BreenoDrawableCompat.setTint
在支持的版本中添加色彩。 - rahimli如果您不喜欢默认的拇指图标,则需要创建自己的Drawable
,随后可以使用以下方式在代码中设置拇指图标:
Drawable thumb = getResources().getDrawable( R.drawable.myThumb );
SeekBar mSeekBar = (SeekBar) findViewById(R.id.mySeekBar);
mSeekbar.setThumb(thumb);
或者您可以在XML中设置拇指:
<SeekBar
...
android:thumb="@drawable/seek_thumb" />
实际的Drawable可以是图像、形状或任何您可能需要的其他类型的Drawable。如果您希望当按下拇指时它的外观发生变化,您将需要创建一个State List Drawable
。
sb.getProgressDrawable().setColorFilter(getResources().getColor(R.color.my_color), PorterDuff.Mode.SRC_ATOP)
更好。 - CrimsonXandroid:progressTint="@color/yourColor"
。 - Kyo HuusetColorFilter(int color, @NonNull Mode mode)
已被弃用。 - RaffMag