Question

I'm trying to change a progress bar's indeterminate drawable on an event. When calling

mProgressBar.setIndeterminateDrawable(drawable);

The progress has no background. The drawable is valid and works if I set it in XML. Any idea's on how to fix this issue?

Était-ce utile?

La solution

Looking at the ProgressBar source code, it looks like setIndeterminateDrawable doesn't call updateDrawableBounds so you'll have to manually set the bounds on your new drawable.

Autres conseils

After setting new drawable, we have to set its bounds.

Drawable drawable = getResources().getDrawable(R.drawable.your_new_custom_drawable);
Rect bounds = progress.getIndeterminateDrawable().getBounds(); // re-use bounds from current drawable
progress.setIndeterminateDrawable(drawable); // set new drawable
progress.getIndeterminateDrawable().setBounds(bounds); // set bounds to new drawable

After setIndeterminateDrawable() you must call requestLayout()

Ex:

progressBar.setIndeterminateDrawable(yourDrawable)
progressBar.requestLayout();

The same question was answered here: progressBar.setIndeterminateDrawable() doesn't work

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top