Можно ли добавить внутренний индикатор выполнения в TableLayout?

1

У меня есть представление прокрутки, которое содержит 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>
  • 0
    Я думаю, это потому, что у вас это внутри прокрутки. вертикальное центрирование, вероятно, не работает, потому что высота не фиксирована? Почему бы вам не использовать прогрессдиалог вместо этого?
  • 0
    У остальной части приложения есть неопределенный индикатор выполнения, и чтобы ощущение приложения было единообразным, я старался держать его в центре экрана. Спасибо за вклад.
Теги:
progress-bar
tablelayout

1 ответ

0

У вас есть 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);

Поэтому я надеюсь, что это сработает для вас. Благодарю!

Ещё вопросы

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