zhanghai / MaterialProgressBar

Material Design ProgressBar with consistent appearance
Apache License 2.0
2.21k stars 279 forks source link

ProgressBar has Gingerbread-style if not using indeterminate mode #58

Closed Dan1ve closed 7 years ago

Dan1ve commented 7 years ago

Hi, I'm currently testing this library, and overall, it seems to work fine. However, I run into an issue I could not resolve: When I use the MaterialProgressBar on Android 4.4 with an indeterminate style and later switch to a determinate mode (indeterminate = false), the style of the ProgressBar gets a really weird look (Gingerbread?).

XML:

<me.zhanghai.android.materialprogressbar.MaterialProgressBar
                    android:id="@+id/progress_bar_download"
                    style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
                    app:mpb_progressStyle="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_weight="1"
                    android:indeterminate="true"
                    android:max="100"
                    android:paddingBottom="8dp"
                    android:paddingTop="8dp" />

and then in code (under certain circumstances) I call:

progressBar.setIndeterminate(false);
progressBar.setProgress(<some_int_value>);

Result:

image

Am I missing something here? Note that the indeterminate styling works flawlessly.

Thanks, Daniel

Dan1ve commented 7 years ago

I think I figured it out now:

progressBar.setIndeterminate(false);
progressBar.setProgressDrawable(new HorizontalProgressDrawable(this));
progressBar.setProgress(50);

Can you confirm this is the right way to handle changes of the indeterminate-mode at runtime?

Best, Daniel

zhanghai commented 7 years ago

Quoting READNE:

app:mpb_setBothDrawables: Whether both determinate and indeterminate drawables should be set on this progress bar. Defaults to false.

You need to set it to true if you need both of the drawables, and this is so-designed because each backported drawable has some runtime cost.

Dan1ve commented 7 years ago

Even though I did read that section, its meaning wasn't 100% clear to me. Thanks for clarifying! 👍