3

indeteminateDrawableプログレスバーを変更しようとすると、プログレスバーのドローアブルを変更する必要があります。無効化、requestLayoutなどを試しました。どうすれば修正できるかわかりません。ありがとう..... ..

ここにコード:

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

progressBar.setIndeterminate(true); 

はい。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);
    }
4

4 に答える 4

3

解決するdrawable.setBounds()前に固有のサイズで呼び出す必要がありますsetIndeterminateDrawable()

于 2016-07-27T07:21:06.373 に答える
0

Drawable を変更するたびに新しい ProgressBar を作成することで、同じ問題を修正しました。

ノート:

  1. 前の ProgressBar を非表示にします。
  2. 新しいものを作成して表示します。

コード:

public class MyProgressDialog extends ProgressDialog {
    public MyProgressDialog(Context context) {
        super(context);
    }

    public ResultType resultType;

    public enum ResultType {
        eNone,
        eSuccess,
        eFail;
    }

    public void hide(String message, long completionIndicatorInterval) {
        hide();

        if ( (completionIndicatorInterval > 0) &&
                (resultType != ResultType.eNone)) {
            final MyProgressDialog completedDialog = new MyProgressDialog(getContext());
            completedDialog.setCancelable(false);
            completedDialog.setMessage(message);

            if (resultType == ResultType.eSuccess) {
                Drawable drawable = getContext().getResources().getDrawable(R.drawable.check);
                completedDialog.setIndeterminateDrawable(drawable);
                completedDialog.setIndeterminate(true);
            } else {
                Drawable drawable = getContext().getResources().getDrawable(R.drawable.close_image);
                completedDialog.setIndeterminateDrawable(drawable);
                completedDialog.setIndeterminate(true);
            }

            completedDialog.show();

            Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    hide();
                    completedDialog.hide();
                }
            };
            handler.postDelayed(runnable, completionIndicatorInterval);
        }
    }
}
于 2015-04-02T07:27:55.603 に答える