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