У меня есть представление прокрутки, которое содержит Tablelayout в качестве дочернего представления. Теперь, пока я получаю данные с сервера, я бы хотел отобразить индикатор выполнения на экране. Когда данные получены, индикатор выполнения должен быть заменен табло.
Я могу добиться этого частично. Я добавляю представление progressbar в третью строку (строки 1 и 2 - это заголовки), которая имеет видимость после получения данных и создания таблеток.
Проблема в том, что индикатор выполнения отображается в верхней части экрана. Чтобы быть совместимым с приложением, индикатор выполнения должен находиться в середине экрана, так как я имею его в ListViews.
Вот фрагмент кода для Progressbar
'<TableRow
android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal">
<ProgressBar
android:id="@+id/list_progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
</TableRow>
У вас есть TableLayout внутри, который ставит все TableRows, как я надеюсь, что вы делаете, в том числе и с ProgressBar, теперь вместо того, чтобы заменять.
Вы можете добиться этого другим способом, просто сделайте View.GONE из TableRow, содержащего ProgressBar, и View.VISIBLE of TableRow, который вы хотите показать.
Например;
<TableLayout>
<TableRow android:id="@+id/trheader1" .../>
<TableRow android:id="@+id/trheader2" .../>
<!-- keeping the visibility of gone //-->
<TableRow android:id="@+id/trRow3" android:visibility="gone" .../>
<!-- tr containing progressBar //-->
<TableRow android:id="@+id/trprogressBar" .../>
</TableLayout>
когда вы получаете данные
((TableRow) findViewById(R.id.trRow3)).setVisibilty(View.VISIBLE);
((TableRow) findViewById(R.id.trprogressBar)).setVisibilty(View.GONE);
Поэтому я надеюсь, что это сработает для вас. Благодарю!