Seekbar进度drawable异常行为onPause

Posted

技术标签:

【中文标题】Seekbar进度drawable异常行为onPause【英文标题】:Seekbar progress drawable abnormal behavior onPause 【发布时间】:2016-08-09 18:51:14 【问题描述】:

我在片段中显示了一个搜索栏。搜索栏具有自定义拇指和进度可绘制对象。它们显示得很好,但是当我暂停活动并返回它时,进度条宽度奇怪地增加到拇指的相同高度!我找不到这个异常行为的问题。

如何正常显示

活动暂停后

我的代码:

// 在片段 onStart 内

seekBar.setThumb(getResources().getDrawable(R.drawable.form_bg));
            seekBar.setProgressDrawable(getResources().getDrawable(R.drawable.progress));

// seekBar xml

<SeekBar
                    android:id="@+id/seekBar"
                    android:layout_
                    android:layout_
                    android:layout_marginBottom="8dp"
                    android:indeterminate="false"
                    android:layout_marginTop="5dp"
                    android:max="100"
                    android:maxHeight="6dp"
                    android:progress="50" />

// 拇指可绘制

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

// 可绘制进度

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:top="0dp" android:bottom="0dp" android:gravity="center_vertical"  android:id="@android:id/background">
    <shape>

        <solid android:color="@color/activity_bg" />
    </shape>
</item>

<item android:gravity="center_vertical" android:id="@android:id/progress">
    <clip>
        <shape>
            <solid android:color="@color/form_color_syrup" />
        </shape>
    </clip>
</item>

【问题讨论】:

你运行的是什么版本?在早期版本中,您必须使用九个补丁;对可绘制 XML 资源的支持还没有达到现在的水平。 我正在 Android 5.1 上进行测试,但是我在以前的应用程序中使用了相同的代码(在活动而不是片段中使用了搜索栏)并且它工作正常。我不知道这里出了什么问题。 【参考方案1】:

终于找到了解决办法。

Rect bounds = seekBar.getProgressDrawable().getBounds();

    seekBar.setThumb(getResources().getDrawable(R.drawable.form_bg));
    seekBar.setProgressDrawable(getResources().getDrawable(R.drawable.progress));

seekBar.getProgressDrawable().setBounds(bounds);

【讨论】:

以上是关于Seekbar进度drawable异常行为onPause的主要内容,如果未能解决你的问题,请参考以下文章

Android seekbar使用

Android SeekBar 设置自定义thumb 图片显示异常

androd中怎么替换android seekbar 刻度的系统滑块图标

Android 仿vivo的SeekBar样式

Android基础控件ProgressBar进度条的使用

如何自定义seekBar的样式?