在 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 上应用任何主题,后者将具有操作栏。
上阅读更多内容
如何在 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 上应用任何主题,后者将具有操作栏。