The ActivityIndicator
represents a UI widget which displays a progress indicator hinting the user
for some background operation running like loading image, data, accepting a request, etc.
We can control its behavior by setting or binding to its boolean property busy
.
You can work with its boolean busy
property and set it to true
or false
, thus displaying or hiding the control.
<ActivityIndicator busy="{{ isBusy }}" loaded="indicatorLoaded"/>
const Observable = require("tns-core-modules/data/observable").Observable;
function onNavigatingTo(args) {
const page = args.object;
const vm = new Observable();
vm.set("isBusy", true);
page.bindingContext = vm;
}
exports.onNavigatingTo = onNavigatingTo;
function indicatorLoaded(args) {
const activityIndicator = args.object;
activityIndicator.on("busyChange", (aiargs) => {
const indicator = aiargs.object;
console.log(`indicator.busy changed to: ${indicator.busy}`);
});
}
exports.indicatorLoaded = indicatorLoaded;
import { EventData, Observable } from "tns-core-modules/data/observable";
import { Page } from "tns-core-modules/ui/page";
import { ActivityIndicator } from "tns-core-modules/ui/activity-indicator";
export function onNavigatingTo(args: EventData) {
const view = args.object as Page;
const vm = new Observable();
vm.set("isBusy", true);
view.bindingContext = vm;
}
export function indicatorLoaded(args: EventData) {
let activityIndicator = args.object as ActivityIndicator;
activityIndicator.on("busyChange", (aiargs: EventData) => {
let indicator = aiargs.object as ActivityIndicator;
console.log("indicator.busy changed to: " + indicator.busy);
});
}
Improve this document
Demo Source
The ActivityIndicator
supports styling the color
(default value is blue
) and backgroundColor
(default value is transparent
) properties.
<ActivityIndicator busy="true" color="red" width="100" height="100"/>
nativescript-theme-core CSS class |
Description |
activity-indicator |
Styles the color of the indicator in sync with the main theme color. |
Improve this document
Demo Source
<ActivityIndicator loaded="onLoaded" busy="true" backgroundColor="red" width="100" height="100"/>
const isIOS = require("tns-core-modules/platform").isIOS;
function onLoaded(args) {
const view = args.object;
if (isIOS) {
// accessing the native iOS API https://developer.apple.com/documentation/uikit/uiactivityindicatorviewstyle
view.ios.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.White;
}
}
exports.onLoaded = onLoaded;
import { isIOS } from "tns-core-modules/platform";
import {ActivityIndicator} from "tns-core-modules/ui/activity-indicator";
export function onLoaded(args) {
const view = args.object as ActivityIndicator;
if (isIOS) {
// accessing the native iOS API https://developer.apple.com/documentation/uikit/uiactivityindicatorviewstyle
view.ios.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.White;
}
}
Dynamic code-behind creation of ActivityIndicator
and showing the indicator while image is loading.
const myloadingObject = { isLoading: true };
const indicator = new ActivityIndicator();
// Bind the busy property of the indicator to the isLoading property of the image
indicator.bind({
sourceProperty: "isLoading",
targetProperty: "busy"
}, myloadingObject);
console.log(indicator.busy); // busy is a writable property
myStack.addChild(indicator);
const myloadingObject = { isLoading: true };
const indicator = new ActivityIndicator();
// Bind the busy property of the indicator to the isLoading property of the image
indicator.bind({
sourceProperty: "isLoading",
targetProperty: "busy"
}, myloadingObject);
console.log(indicator.busy); // busy is a writable property
myStack.addChild(indicator);
Improve this document
Demo Source
Name |
Type |
Description |
busy |
boolean |
Gets or sets a value indicating whether the widget is currently displaying progress. |
Name |
Description |
busyChange |
Emitted when the ActivityIndicator busy property is changed. |
loaded |
Emitted when the view is loaded. |
unloaded |
Emitted when the view is unloaded. |
layoutChanged |
Emitted when the layout bounds of a view changes due to layout processing. |