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;
}