Добавление заголовка обратно в окно Android при использовании PhoneGap - PullRequest
3 голосов
/ 29 августа 2011

Я создаю приложение, используя PhoneGap, который вызывает

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

в родительском onCreate (DroidGap). Но я хочу добавить заголовок обратно, чтобы я мог использовать ActionBar. Есть ли какой-нибудь флаг / способ сбросить эту функцию обратно? Если худшее приходит к худшему, я могу изменить весь класс DroidGap, но хотел бы по-прежнему использовать их версию.

И в случае, если это поможет кому-либо увидеть, что DroidGap делает в своем onCreate, вот ссылка: https://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/DroidGap.java

Код ActionBar:

super.onCreate(savedInstanceState); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.main);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR); super.init();
ActionBar bar = getActionBar(); 
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // here NPE is thrown
bar.addTab(bar.newTab().setText("Some Text").setTabListener(new CustomTabListener()));

Ответы [ 4 ]

4 голосов
/ 02 июля 2012

Phonegap / Cordova version 1.9 добавлен флаг для переключения этой функции:

if(!this.getBooleanProperty("showTitle", false))
{
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}

Пример метода onCreate, который включает заголовок окна:

@Override
public void onCreate(Bundle savedInstanceState) {

    // enable window title for actionbar support
    super.setBooleanProperty("showTitle", true);

    super.onCreate(savedInstanceState);        
}
2 голосов
/ 29 августа 2011

Вы тестировали FEATURE_CUSTOM_TITLE?

getWindow().requestFeature(Window.FEATURE_CUSTOM_TITLE);
getWindow().setTitle(getResources().getString(R.string.app_name));

или попробуйте загрузить тему с заголовком:

setTheme(android.R.style.choose some of the themes listed or create your own);
1 голос
/ 29 августа 2011

Итак, я не смог решить эту проблему без изменения исходного кода.В итоге я скопировал класс DroidGap в свой собственный класс (исходный код приведен в посте) и прокомментировал следующую строку:

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

Затем я расширил свою обычную деятельность, изменив свою версиюDroidGap, а не версия PhoneGap.

Затем, в onCreate моей деятельности, у меня есть что-то вроде этого:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

    ActionBar bar = getActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.addTab(bar.newTab().setText("Home").setTabListener(new CustomTabListener()));
    bar.addTab(bar.newTab().setText("Something").setTabListener(new CustomTabListener()));

    loadUrl("file:///android_asset/www/index.html");
}

Без requestFeature вы получите null из getActionBar().

Надеюсь, это поможет кому-то еще!

0 голосов
/ 08 декабря 2013

Проверьте манифест Android. Я обнаружил, что phonegap генерирует манифест Android, который определяет android: theme = "@ android: style / Theme.Black.NoTitleBar". Изменение этой темы позволило мне управлять отображением заголовка из кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...