Android隐藏自定义ActionBar

时间:2015-03-29 16:41:58

标签: android android-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显示在每个活动上,除了登录..所以我从我的登录活动中隐藏了ActionBar(来自:stackoverflow):

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"
    >

当我运行应用程序时,我收到错误:您需要在此活动中使用Theme.AppCompat主题(或后代)

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

但是现在......我无法在我的Login活动中隐藏ActionBar,因为它不再扩展ActionBarActivity ..所以下面的代码:

   ActionBar actionBar = getSupportActionBar();

无法工作..任何人都知道如何在Login活动中隐藏操作栏,但仍然使用自定义ActionBartheme?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

    setContentView(R.layout.login_layout);