为什么Android Studio总是在应用程序devise中显示ActionBar,即使被禁用?

我在新的Android Studio 1.4中有一个应用程序(尽pipe如此,这个问题也出现在1.3.2),并且由于扩展function,我决定使用工具栏而不是操作栏。

我已经相应地设置了xmljava来隐藏操作栏,并且在编译时,它不存在,而是工具栏在ActionBar将出现的顶部。 但从deviseangular度来看,我仍然看到它,而且没有办法去除它。 这使我困扰,因为它隐藏了一些devise领域,我没有足够的空间来满足我所有的元素。

如何在Android Studiodevise中删除ActionBar(1)并将其replace为工具栏(2),以使(3)具有完整的高度。

Android Stdui XML设计

这里是我的XML和Java文件,看起来像很多,但他们是90%的默认值。 我在从Theme.AppCompat.Light.DarkActionBar派生的styles.xml中设置AppTheme主题,并在清单中告诉编译器使用AppTheme.NoActionBar作为活动主题。

activity_unlock.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.example.testapp.UnlockActivity"> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@android:color/white" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_unlock" /> </android.support.design.widget.CoordinatorLayout> 

content_unlock.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_unlock" tools:context="com.example.testapp.UnlockActivity"> </RelativeLayout> 

UnlockActivity.java

 package com.example.testapp; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; public class UnlockActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_unlock); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); } } 

Android清单

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testapp"> <application> <activity android:name="com.example.testapp.UnlockActivity" android:label="@string/title_activity_unlock" android:theme="@style/AppTheme.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

styles.xml

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowNoTitle">true</item> <!--We will be using the toolbar so no need to show ActionBar--> <item name="android:windowActionBar">false</item> <!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette--> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> </resources> 

Solutions Collecting From Web of "为什么Android Studio总是在应用程序devise中显示ActionBar,即使被禁用?"

由于您可以通过任意样式以任意数量的方式实例化布局,因此可以通过单击图像中显示的button来查看布局如何以不同样式显示。 如果你没有在你的代码中设置另一个风格或主题,那么清单中的主题将被使用。

在这里输入图像说明

最后这很容易。 我只是改变了styles.xml

  <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 

我不知道为什么这会影响devise器视图,因为当启动时,两个版本都提供了没有操作栏的相同布局(因为我使用在styles.xml定义的AppTheme.NoActionBar ),我猜这是Android Studiodevise渲染错误。