Просто оберните все содержимое с помощью GridLayout
и добавьте ActivityIndicator
в качестве второго дочернего элемента на том же макете. Что-то вроде
<Page class="page">
<ActionBar class="action-bar">
<Label class="action-bar-title" text="Image backup"></Label>
</ActionBar>
<GridLayout>
<TabView :selectedIndex="selectedIndex" @selectedIndexChange="indexChange">
<TabViewItem title="Add images">
<StackLayout>
<Button @tap="takePicture" text="Take picture"></Button>...
<StackLayout v-if="newImages.length" orientation="horizontal">...</StackLayout>
<RadListView layout="grid" ref="newImages" for="image in newImages">
<v-template>
...
</v-template>
</RadListView>
</StackLayout>
</TabViewItem>
<TabViewItem title="Backedup images">
<StackLayout>
<Button @tap="fetchAllBackedupImages" text="Get all backedup images"></Button>
<StackLayout v-if="backedupImages.length" orientation="horizontal">
...
</StackLayout>
<RadListView layout="grid" ref="backedupImages" for="image in sortedBackedupImages">
<v-template>...</v-template>
</RadListView>
</StackLayout>
</TabViewItem>
</TabView>
<ActivityIndicator></ActivityIndicator>
</GridLayout>
</Page>
Тогда вы можете просто переключать атрибут busy
всякий раз, когда хотите показать / скрыть индикатор. Если добавление ActivityIndicator
к каждому Page
слишком много, то вы можете обернуть свой корневой фрейм с помощью GridLayout
и аналогичным образом добавить туда ActivityIndicator
, так что вам не придется добавлять его к каждому Page
.
Хотя этот подход работает, я бы рекомендовал вместо этого использовать диалоговое окно прогресса, чтобы вы могли на самом деле заблокировать доступ пользователя к пользовательскому интерфейсу, если хотите, вот Пример игровой площадки для аналогичного подхода.