سؤال

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?

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top