Скрыть панель действий на Android на Titanium/Alloy/Appcelerator

Как скрыть панель действий на Android на Alloy/Titanium. Я пробовал следующее:

$.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

person Yahya Uddin    schedule 16.03.2017    source источник
comment
Возможный дубликат Titanium: как скрыть actionBar в проекте, отличном от Alloy ?   -  person miga    schedule 16.03.2017
comment
Решения показывают, как правильно скрыть панель действий (с помощью темы или при вызове метода hide())   -  person miga    schedule 16.03.2017
comment
@miga Я не могу найти решение, когда вызывать функцию скрытия. Они предоставляют только альтернативный метод, предоставляя тему для окна.   -  person Yahya Uddin    schedule 16.03.2017
comment
см. Via win.activity.actionBar.hide(); you can only hide the Action Bar when your window is finally opened. The main disadvantage is that sometimes you can see the Action Bar for a few milliseconds, because the window is initially created with Action Bar Итак, вы используете это в своем мероприятии open. Тем не менее, проще использовать тему NoTitleBar в вашем tss.   -  person miga    schedule 16.03.2017


Ответы (1)


Есть несколько вещей, на которые вам нужно обратить внимание:

Вопрос 1. Вы хотите скрыть панель действий для всех окон (имеется в виду для всего приложения)?

Вопрос 2. Вы хотите скрыть панель действий после открытия окна и выполнения какого-либо действия (т. е. при щелчке или прокрутке)?

Вопрос 3. Вы хотите скрыть панель действий для нескольких окон и показать ее для других окон?


Ответ 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>

Способ 2 – установить свойство theme в app.tss:

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


Ответ 2:

Это тот случай, когда вы столкнулись с этой проблемой. Скрытие панели действий по коду в файле .js возможно только при открытом окне. Вам нужно будет использовать событие окна onOpen для запуска этого кода:

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

Итак, должно быть так:

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

Или вы можете запустить метод hide() при нажатии какой-либо кнопки, потому что вы сможете щелкнуть кнопку, когда очевидно, что это окно открыто, например:

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


Ответ 3:

Используя метод 2 из ответа 1, вы можете применить тему в файле .tss или .xml, чтобы скрыть панель действий в соответствующих окнах и не применить любую тему в окнах, которые будут иметь панель действий.


Узнайте больше об темах Titanium для Android.

person Prashant Saini    schedule 17.03.2017
comment
очень хорошее объяснение различных методов. Возможно, вы захотите отредактировать метод A1) 1, чтобы указать правильную тему и указать, что она находится в tiapp.xml. - person miga; 18.03.2017
comment
Спасибо @miga :) .. .. Извините, это опечатка. :) - person Prashant Saini; 18.03.2017