Как программно добавить ProgressBar в AsyncTask.onPreExecute?

1

Код в async-задаче:

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        ScrollView sv = (ScrollView)findViewById(mScrollViewID);
        sv.removeAllViews();
        pb = new ProgressBar(mContext, null, android.R.attr.progressBarStyleSmall);
        pb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        pb.setIndeterminate(true);
        pb.setVisibility(View.VISIBLE);

        TextView tv = new TextView(mContext);
        tv.setText("Some text here.");
        sv.addView(pb);
    }

Обратите внимание на TextView в конце - если я добавлю это в ScrollView, это будет просто отлично. Тем не менее, я не могу заставить ProgressBar отображать что-либо вообще. Это мой первый раз, используя контроль - я пропустил что-то глупое?

Изменение: если это имеет значение, используемый ScrollView определяется в XML как:

<ScrollView android:id="@+id/scrollview0" android:layout_width = "match_parent" android:layout_height="match_parent"
            android:fillViewport="true" android:padding="5dp">
  • 0
    Необходимо ли создавать экземпляр ProgressBar в RunTime?
  • 0
    Вы пытались установить ширину ProgressBar MATCH_PARENT вместо WRAP_CONTENT ?
Показать ещё 1 комментарий
Теги:
android-progressbar

3 ответа

3
Лучший ответ

Эта проблема возникает во многих случаях при динамическом создании ProgressBar

Я предлагаю создать один ProgressBar через xml

и установить видимость по умолчанию GONE

  • 2
    Show - это не метод ProgressBar, это метод ProgressDialog.
  • 0
    Да .. моя ошибка
Показать ещё 3 комментария
0

если вы добавите tv после pb то deffinatyl показывает ошибку?

Это потому, что ScrollView только одного ребенка. Итак, что вам нужно добавить LinearLayout в ScrollView а затем добавить другие материалы в Linear layout

  • 0
    Я не думаю, что вы поняли вопрос ... телевизор только для того, чтобы продемонстрировать, что добавление дочернего ScrollView в ScrollView видимым, в отличие от ProgressBar . Телевидение есть только для целей отладки и будет отсутствовать.
  • 0
    хм .... а потом ваш код выглядит идеально для меня. ScrollView - ваш родительский вид? Если это не родитель, попробуйте ScrollView высоту вашего ScrollView . Скажи 100dip
0
  • 0
    он не хочет обновляться, он просто хочет показать
  • 0
    Как сказал gtumca, это Indeterminate ProgressBar (так что это просто вращающийся круг или что-то подобное); обновления не требуются. Для полноты я попытался вызвать setProgress(50) в onPreExecute и onProgressUpdate - без изменений в функциональности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню