Android 隐藏自定义 ActionBar

Android hiding custom ActionBar

我正在为我的 ActionBar 使用自定义背景。我遵循了 here 的教程。

我的 styles.xml 看起来像这样:

  <resources>
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@color/actionbar_bg</item>
    </style>
</resources>

我希望此 ActionBar 显示在每个 activity 上,除了登录 .. 所以我从我的登录 activity 中隐藏了 ActionBar(来自:Whosebug):

public class Login extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    ActionBar actionBar = getSupportActionBar();
    actionBar.hide();

在我的清单中,我添加了自定义主题......像这样:

 <application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:theme="@style/MyTheme"
    >

当我 运行 应用程序时,我收到错误消息:You need to use a Theme.AppCompat theme (or descendant) with this activity

所以我在 Whosebug 上搜索 solution。我不得不扩展 Activity 而不是 ActionBarActivity。我这样做了,也是在我的 登录 Activity 上。

但是现在...我不能再在登录时隐藏 ActionBar activity 因为它不再扩展 ActionBarActivity ..所以下面的代码:

   ActionBar actionBar = getSupportActionBar();

不会工作.. 任何人都知道如何在登录时仍然隐藏操作栏 activity,但仍然使用自定义 Actionbar 主题?

TL;DR:我想使用自定义操作栏,但我想在登录时隐藏它 activity。我可以让 actionbar 工作,但前提是我让我的 Login activity 从 Activity 扩展,而不是 ActionBarActivity - 这会导致 getSupportActionBar();停止工作,所以我不能再隐藏操作栏了。

创建一个父级为 Theme.Holo.Light.NoActionBar 的主题。使用 android:theme 参数将其分配给您的登录名 activity。

只需在 onCreate 方法中的 setContentView() 方法之前添加以下代码即可:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); // add this line

    setContentView(R.layout.login_layout);