【问题标题】:Holoeverywhere : how to programmatically remove at runtime the action bar from an activityHoloeverywhere:如何在运行时以编程方式从活动中删除操作栏
【发布时间】:2013-05-02 17:17:10
【问题描述】:

在活动中移除操作栏的正确方法是什么?

我的活动扩展了 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 -table 上删除该栏 在手机上时-android 2.3.3- 栏不会被移除。

在引入 holoeverywhere 之前,只需 requestWindowFeature(Window.FEATURE_NO_TITLE). 一切正常

在运行时删除 holoeverywhere 中的操作栏的正确方法是什么? (我想在运行时这样做,因为用户可以选择设置 DARK 或 LIGHT 布局,默认为 DARK)

【问题讨论】:

    标签: android android-layout android-widget android-holo-everywhere


    【解决方案1】:

    参见标志 ThemeManager.NO_ACTION_BAR。 或者直接打电话

    getSupportActionBar().hide();
    

    【讨论】:

    • 它也适用于 setTheme(ThemeManager.DARK | ThemeManager.NO_ACTION_BAR) ;我使用的是 ThemeManager.FULLSCREEN 而不是 NO_ACTION_BAR
    【解决方案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...
    • 对不起,我不能帮助你。我回答了我所知道的一切。
    • 使用纯 SDK 一切正常。在我介绍了图书馆之后,我遇到了这个问题。我认为这是一个“愚蠢”的问题,但图书馆根本没有文档!
    • 感谢您的回答...这使我无法支持一些 API 版本 :-)
    • 当我这样做时,我会留下一个空白的白色矩形,那里是操作栏。我做错了什么?谢谢。
    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多