在 Titanium/ Alloy/ Appcelerator 上隐藏 Android 上的操作栏

Hide the action bar on Android on Titanium/ Alloy/ Appcelerator

如何在 Alloy/ Titanium 上隐藏 Android 上的操作栏。我尝试了以下方法:

$.index.activity.actionBar.hide()

但它只是抛出错误:

 Cannot read property 'hide' of undefined

完整错误信息如下:

[ERROR] :  TiExceptionHandler: (main) [1605,1605] ----- Titanium Javascript Runtime Error -----
[ERROR] :  TiExceptionHandler: (main) [0,1605] - In /alloy/controllers/index.js:359,27
[ERROR] :  TiExceptionHandler: (main) [1,1606] - Message: Uncaught TypeError: Cannot read property 'hide' of undefined
[ERROR] :  TiExceptionHandler: (main) [0,1606] - Source:     win.activity.actionBar.hide();
[ERROR] :  V8Exception: Exception occurred at /alloy/controllers/index.js:359: Uncaught TypeError: Cannot read property 'hide' of undefined

您需要注意的事项很少:

问题 1 - 是否要为所有 windows(意味着整个应用)隐藏操作栏?

问题 2 - 您想在 window 打开后并执行某些操作(即单击或滚动)后隐藏操作栏吗?

问题 3 - 是否要为少数 windows 隐藏操作栏并为其他 windows 显示?


答案 1:- 使用内置的 Titanium 主题

方法 1 - 在 tiapp.xml 文件中使用此标签:

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
        <application android:theme="@style/Theme.AppCompat.NoTitleBar"/>
    </manifest>
</android>

方法二——在app.tss[=64=中设置主题属性 ]:

"Window[platform=android]":{
    theme : 'Theme.AppCompat.NoTitleBar'
}


答案 2:

这就是您遇到的问题。只有在打开 window 时才可以通过 .js 文件中的代码隐藏操作栏。您必须使用 window 的 onOpen 事件 到 运行 此代码:

$.index.activity.actionBar.hide();

所以,一定是这样的:

$.index.addEventListener('open', function () {
   $.index.activity.actionBar.hide();
});

或者您可以 运行 在某些按钮单击时隐藏 () 方法,因为当显然 window 打开时您将能够单击按钮,如下所示:

$.someButton.addEventListener('click', function () {
   $.index.activity.actionBar.hide();
});


答案 3:

通过使用答案1方法2,您可以在.tss或.[=89中应用主题=] 文件以隐藏相应 windows 上的操作栏,并且不在 windows 上应用任何主题,后者将具有操作栏。


Titanium Android Themes

上阅读更多内容