【发布时间】:2015-03-29 16:41:57
【问题描述】:
我正在为我的 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。我这样做了,也是在我的登录活动上。
但是现在......我不能再在我的登录活动中隐藏 ActionBar,因为它不再扩展 ActionBarActivity ......所以下面的代码:
ActionBar actionBar = getSupportActionBar();
不会工作.. 任何人都知道如何在登录活动中仍然隐藏操作栏,但仍然使用自定义操作栏主题?
TL;DR:我想使用自定义操作栏,但我想在我的登录活动中隐藏它。我可以让操作栏工作,但前提是我让我的登录活动从 Activity 扩展,而不是 ActionBarActivity - 这会导致 getSupportActionBar();停止工作,所以我不能再隐藏操作栏了。
【问题讨论】:
-
您无需隐藏,只需为您的登录活动使用另一个主题即可。我正在尝试在任何地方使用支持库,所以我使用
Theme.AppCompat.Light.NoActionBar作为我的父主题并将工具栏设置为我真正需要它的操作栏:)