Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

progressBar.setIndeterminateDrawable() doesn't work

Tags:

android

When I try change my indeteminateDrawable progressbar just gone( I have to change drawable for my progressbar. I tried invalidate, requestLayout and other. I dont know how I can fix it. Thank you..............

Here code:

progressBar.setIndeterminateDrawable(getResources().getDrawable(R.drawable.‌​progress_indeterminate_horizontal_didnt_like));

progressBar.setIndeterminate(true); 

Yes. It's visible in XML.

 <ProgressBar
        android:id="@+id/progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
         android:indeterminateDrawable="@drawable/progress_indeterminate_horizontal_to_review" />

  private void showProgressByCategory(String category) {
        progressBar = (ProgressBar) findViewById(R.id.progress);


        switch (CATEGORY.getPosition(category)) {
        case CATEGORY.DIDNT_LIKE_POS:
            // Didnt like
            progressBar.setIndeterminateDrawable(getResources().getDrawable(
                    R.drawable.progress_indeterminate_horizontal_didnt_like));

            break;
        case CATEGORY.TO_SEE_POS:
            // To See
            progressBar.setIndeterminateDrawable(getResources().getDrawable(
                    R.drawable.progress_indeterminate_horizontal_to_see));
            break;
        case CATEGORY.SAW_AND_LIKED_POS:
            // Saw And Liked
            progressBar.setIndeterminateDrawable(getResources().getDrawable(
                    R.drawable.progress_indeterminate_horizontal_saw_liked));
            break;
        case CATEGORY.TO_REVIEW_POS:
            // To Review
            progressBar.setIndeterminateDrawable(getResources().getDrawable(
                    R.drawable.progress_indeterminate_horizontal_to_review));

            break;
        }
        progressBar.setIndeterminate(true);
    }
like image 454
edbaev Avatar asked Jul 12 '26 18:07

edbaev


2 Answers

you must call drawable.setBounds() with intrinsic size before setIndeterminateDrawable() to solve

like image 181
ceabie Avatar answered Jul 15 '26 07:07

ceabie


if your drawable is an animation (drawable with animation-list), you should call your drawable as AnimationDrwable. Set with setIndeterminateDrawable and call start for your drawable.

AnimationDrawable drawable = getResources().getDrawable(R.drawable.your_custom_drawable);
    Rect bounds = progressBar.getIndeterminateDrawable().getBounds(); // get bounds from current drawable
    progressBar.setIndeterminateDrawable(drawable);
    drawable.start();
    progressBar.getIndeterminateDrawable().setBounds(bounds); //thanks ceabie
like image 24
Oscar Josue Alvrez Avatar answered Jul 15 '26 07:07

Oscar Josue Alvrez



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!