2

我正在用 NewtonScript 开发一个 Newton OS 应用程序,并且protoApp原型比newtApplication原型(即 NewtApp)更适合应用程序类型。protoApp提供带有关闭框的标题和状态栏,但是如何在状态栏中插入自定义按钮(因为它只显示时钟)?

4

2 回答 2

1

Newton 原型和视图框架非常灵活,因此虽然让 NewtApp 之类的东西在幕后做很多魔术很不错,但我发现它通常也可以根据需要直接对布局进行编码。在下面的示例中,我只是创建了一个按钮作为应用程序的子视图,并将其移动到正确的位置。我不认为我们必须期待对原型进行很多更改,所以像素值可以这样固定:)

mainView := {
    _proto: protoApp,
    title: "App Title",
    appSymbol: 'appSymbol,

    stepChildren: [
        {
            _proto: protoTextButton,
            text: "Custom",
            viewJustify: vjParentRightH + vjParentBottomV + vjCenterH,
            viewBounds: {left: -70, top: -16, right: -26, bottom: -3}
        },
    ],

    viewJustify: vjParentFullH + vjParentFullV,
    viewBounds: {left: 16, top: 16, right: -16, bottom: -16},
};
于 2013-08-11T18:48:34.237 回答
1

我在NewtonTalk上找到了这个帖子Paul Guyot说:

您不需要使用 protoApp。您可以改用 protoFloater。然后,您可以添加一个更好的类似 NewtonOS 2.x 的状态栏来替换 protoApp 丑陋的时钟/电池选择器,并将关闭框放在此栏上。诀窍是从NewtApp 框架中窃取bar,即使用newtStatusBarNoClose。我为几个项目做了这个,它可能记录在文档中(事实上你可以使用 newtStatusBar[NoClose] 而不是 protoStatusBar),你可以利用按钮处理代码(在左边和上自动对齐它们正确的)。

事实证明,使用newtStatusBar而不是protoStatus 建议记录在牛顿程序员指南(2.0)第 7-19 页:

注意
新的状态栏原型 newtStatusBarNoClose 和 newtStatusBar 是向应用程序添加状态栏的首选方式。这些原型在“NewtApp 应用程序”(第 4-1 页)中进行了描述,简化了添加按钮并在您的应用程序移动到后台时自动隐藏关闭框。

而且,Paul 关于使用protoFloater而不是的建议protoApp是死气沉沉的,虽然,我实际上最终使用了protoDragger. 我不得不手动添加protoTitle& protoStatusBar

mainView := {
    _proto: protoDragger,
    viewflags: vApplication + vVisible + vClickable,
    appSymbol: kAppSymbol,
    viewJustify: vjParentFullH + vjParentFullV,
    viewBounds: {left: 16, top: 16, right: -16, bottom: -16},
    stepChildren: [
        {
            _proto: protoTitle,
            title: kAppTitle
        },
        {
            _proto: newtStatusBar,
            menuLeftButtons: [],
            menuRightButtons: []
        },
    ],
};
于 2013-08-07T18:35:36.263 回答