6

正如我在标题中所说,当我使用 setProgressDrawable 时,它​​会填充整个 SeekBar:如果进度为 34%,则进度显示为 100%,但拇指显示正确的百分比为 34%。我不知道可能是什么问题...

   done.setProgressDrawable(getResources().getDrawable(R.drawable.seekbar_progress));
   done.setThumb(getResources().getDrawable(R.drawable.seekbar_thumb));

seekbar_progress.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:width="15dp"    android:color="#52a8ec"/>

seekbar_thumb.xml

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
<gradient android:startColor="#ffffffff" android:endColor="#ff585858" android:angle="270"/>
<size android:height="17dp" android:width="5dp"/>
</shape>

任何想法?

先感谢您!

4

4 回答 4

8

尝试将填充形状像这样放在剪辑标签内

<clip>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:width="15dp"    android:color="#52a8ec"/>
</clip>
于 2013-06-16T21:09:42.627 回答
3

我遇到了同样的问题,下面的代码解决了它。

无论您在何处使用代码来更改您的可绘制对象,只需执行以下操作(其中“p”是您的搜索栏):

int currentProgress = p.getProgress();
p.setProgress(0);
Rect bounds = p.getProgressDrawable().getBounds();
p.setProgressDrawable(getResources().getDrawable(R.drawable.progress_drawable_orange));
p.getProgressDrawable().setBounds(bounds);
p.setProgress(currentProgress);

并且不要忘记在您的onProgressChanged 方法中添加以下检查:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if(!fromUser)
        return;
    // ... THE REST OF YOUR CODE
}

例子

于 2012-08-30T07:01:32.363 回答
1

我以与您相同的情况结束,并通过使用 layer-list XML 文件实现进度来解决问题。在这里查看我的答案。

于 2012-05-16T09:41:41.443 回答
0

您可以调整progressTint布局 xml 中的字段以更改进度颜色,而不会影响 SeekBar 的整个背景。

<SeekBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressTint="@color/seek_bar_progress"/>

还有thumbTintprogressBackgroundTint

于 2017-01-27T21:47:28.933 回答