質問

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