使用PhoneGap时将标题添加回Android窗口

时间:2011-08-29 02:44:59

标签: android android-layout cordova

我正在使用调用

的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 个答案:

答案 0 :(得分:4)

Phonegap / Cordova 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);        
}

答案 1 :(得分:2)

您是否测试了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);

答案 2 :(得分:1)

所以,我最终无法在不修改原始代码的情况下解决这个问题。我最终做的是将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()

希望它可以帮助别人!

答案 3 :(得分:0)

检查Android清单。我发现phonegap会生成一个Android清单,指定android:theme =“@ android:style / Theme.Black.NoTitleBar”。更改此主题允许我从代码控制标题显示。