Код в 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">
Эта проблема возникает во многих случаях при динамическом создании ProgressBar
Я предлагаю создать один ProgressBar через xml
и установить видимость по умолчанию GONE
если вы добавите tv
после pb
то deffinatyl показывает ошибку?
Это потому, что ScrollView
только одного ребенка. Итак, что вам нужно добавить LinearLayout
в ScrollView
а затем добавить другие материалы в Linear layout
ScrollView
в ScrollView
видимым, в отличие от ProgressBar
. Телевидение есть только для целей отладки и будет отсутствовать.
ScrollView
- ваш родительский вид? Если это не родитель, попробуйте ScrollView
высоту вашего ScrollView
. Скажи 100dip
Эта ссылка может помочь: обновить панель прогресса внутри асинтетической
ProgressBar
(так что это просто вращающийся круг или что-то подобное); обновления не требуются. Для полноты я попытался вызвать setProgress(50)
в onPreExecute
и onProgressUpdate
- без изменений в функциональности.
ProgressBar
MATCH_PARENT
вместоWRAP_CONTENT
?