我使用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();停止工作,所以我不能再隐藏动作栏了。
答案 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);