setProgressDrawable填满整个搜索条(setProgressDrawable fil

2019-09-16 13:54发布

正如我在标题中说,当我使用setProgressDrawable,它填补了整个搜索栏:如果进度为34%,进度显示100%,但经验显示正确的percentatge 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>

任何想法?

先感谢您!

Answer 1:

尽量把填充形状的夹子标签内,像这样

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


Answer 2:

我面临着同样的问题,下面的代码解决它。

无论你正在使用的代码来改变你的绘制只是做以下(其中“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
}



Answer 3:

我在同样的情况结束了,你做和管理,通过实现与层列表XML文件的进展来解决问题。 见我的答案在这里 。



Answer 4:

你可以调整progressTint场在布局XML来改变进度颜色不影响搜索栏的整个背景。

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

还有thumbTintprogressBackgroundTint



文章来源: setProgressDrawable fills the entire seekBar