Holoeverywhere:如何在运行时以编程方式从活动中删除操作栏

9

如何正确地删除活动中的操作栏?

我的活动扩展了org.holoeverywhere.app.Activity

我有一个自定义的应用程序类,它扩展了org.holoeverywhere.app.Application,并在启动时执行此静态代码:

ThemeManager.setDefaultTheme(ThemeManager.DARK);
ThemeManager.map(ThemeManager.DARK, R.style.Holo_Demo_Theme);
ThemeManager.map(ThemeManager.LIGHT,  R.style.Holo_Demo_Theme_Light);
ThemeManager.map(ThemeManager.MIXED, R.style.Holo_Demo_Theme_Light_DarkActionBar);
ThemeManager.map(ThemeManager.DARK | ThemeManager.FULLSCREEN,  R.style.Holo_Demo_Theme_Fullscreen);
ThemeManager.map(ThemeManager.LIGHT | ThemeManager.FULLSCREEN, R.style.Holo_Demo_Theme_Light_Fullscreen);
ThemeManager.map(ThemeManager.MIXED | ThemeManager.FULLSCREEN, R.style.Holo_Demo_Theme_Light_DarkActionBar_Fullscreen);

在我的活动中:

protected void onCreate(Bundle savedInstanceState) {

    ThemeManager.removeTheme(this);
    setTheme(ThemeManager.DARK | ThemeManager.FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

如果我在代码中添加requestWindowFeature(Window.FEATURE_NO_TITLE),在一个Android 4.1.1平板电脑上,状态栏将被移除,而在一台Android 2.3.3手机上,状态栏则不会被移除。 在引入holoeverywhere之前,只需使用requestWindowFeature(Window.FEATURE_NO_TITLE)即可正常工作。
那么,在holoeverywhere中运行时删除操作栏的正确方法是什么呢?(我希望在运行时这样做,因为用户可以选择使用DARK或LIGHT布局,默认为DARK)
2个回答

24

请查看标志ThemeManager.NO_ACTION_BAR, 或直接调用

getSupportActionBar().hide();

它也可以使用setTheme(ThemeManager.DARK | ThemeManager.NO_ACTION_BAR); 我之前使用的是ThemeManager.FULLSCREEN而不是NO_ACTION_BAR。 - Maxj

2
您可以通过编程实现这一点:
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class ActivityName extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

或者您可以通过您的AndroidManifest.xml文件完成:

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
</activity>

我添加了一些代码,以便你可以全屏显示,因为这似乎是你想要的。


谢谢您的回答,但是在您的示例中,您没有使用Holoeverywhere库,而是使用了“纯粹”的Android SDK... - Maxj
哦,抱歉我无法帮助你。我回答了我所知道的一切。 - Chintan Soni
使用纯SDK一切正常。但是当我引入库后,出现了这个问题。我认为这是一个“愚蠢”的问题,但是这个库根本没有文档! - Maxj
谢谢你的回答...这让我不会不支持一些API版本 :-) - m13r
当我这样做时,我只剩下一个空白的白色矩形,动作栏本应该在那里。我做错了什么?谢谢。 - AndyCr15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接