Nativescript 以编程方式直接使用 android UI 元素
Nativescript directly using android UI elements programmatically
我正在尝试以编程方式添加 android 搜索栏。
我的XML代码是:
<Page loaded="pageLoaded" xmlns="http://www.nativescript.org/tns.xsd">
<StackLayout id="layo" class="home-panel">
<Label text="Hi" class="h2 description-label" />
</StackLayout>
</Page>
我的 JS 代码是:
const application = require("tns-core-modules/application");
var getViewById = require("tns-core-modules/ui/core/view").getViewById;
function pageLoaded(args) {
var page = args.object;
let context = application.android.context;
let slid = new android.widget.SeekBar(context);
getViewById(page, "layo")._addView(slid);
}
exports.pageLoaded = pageLoaded;
我也试过:
getViewById(page, "layo").addChild(slid);
但两者都给出了以下相同的错误:
An uncaught Exception occurred on "main" thread. Calling js method onCreateView failed
Error: android.widget.SeekBar{995277f VFED...........I. 0,0-0,0} is not a valid View instance.
我对 java 的了解非常少,我找不到任何解决方案。提前致谢。
您可能需要使用 nativescript 的 placeholder
(docs),请参阅下面针对 android 的 seekbar
的修改代码
<StackLayout>
<Placeholder creatingView="creatingView"/>
</StackLayout>
import { CreateViewEventData } from "tns-core-modules/ui/placeholder";
export function creatingView(args: CreateViewEventData) {
let nativeView = new android.widget.SeekBar(args.context);
args.view = nativeView;
}
我正在尝试以编程方式添加 android 搜索栏。
我的XML代码是:
<Page loaded="pageLoaded" xmlns="http://www.nativescript.org/tns.xsd">
<StackLayout id="layo" class="home-panel">
<Label text="Hi" class="h2 description-label" />
</StackLayout>
</Page>
我的 JS 代码是:
const application = require("tns-core-modules/application");
var getViewById = require("tns-core-modules/ui/core/view").getViewById;
function pageLoaded(args) {
var page = args.object;
let context = application.android.context;
let slid = new android.widget.SeekBar(context);
getViewById(page, "layo")._addView(slid);
}
exports.pageLoaded = pageLoaded;
我也试过:
getViewById(page, "layo").addChild(slid);
但两者都给出了以下相同的错误:
An uncaught Exception occurred on "main" thread. Calling js method onCreateView failed
Error: android.widget.SeekBar{995277f VFED...........I. 0,0-0,0} is not a valid View instance.
我对 java 的了解非常少,我找不到任何解决方案。提前致谢。
您可能需要使用 nativescript 的 placeholder
(docs),请参阅下面针对 android 的 seekbar
<StackLayout>
<Placeholder creatingView="creatingView"/>
</StackLayout>
import { CreateViewEventData } from "tns-core-modules/ui/placeholder";
export function creatingView(args: CreateViewEventData) {
let nativeView = new android.widget.SeekBar(args.context);
args.view = nativeView;
}