java 为什么 Android Studio 总是在应用设计中显示 ActionBar,即使被禁用?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32909364/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Why does Android Studio always show ActionBar in app design, even when disabled?
提问by michnovka
I have an application in new Android Studio 1.4 (nonetheless this issue was present at 1.3.2 as well) and I have decided to go with toolbar instead of actionbar because of the extended features.
我在新的 Android Studio 1.4 中有一个应用程序(尽管这个问题在 1.3.2 中也存在),并且由于扩展功能,我决定使用工具栏而不是操作栏。
I have set both xml and java accordingly to hide actionbar, and when compiled, it is not present, instead the toolbar is on top where ActionBar would appear. But in design view I still see it and there is no way to remove it. This bothers me, as it hides some of the designing area and I dont have enough space for all my elements.
我已经相应地设置了 xml 和 java 以隐藏操作栏,并且在编译时它不存在,而是工具栏位于 ActionBar 出现的顶部。但是在设计视图中我仍然看到它并且无法将其删除。这让我很困扰,因为它隐藏了一些设计区域,而且我没有足够的空间来放置我的所有元素。
How to remove the ActionBar (1) and have it replaced with toolbar (2) in Android Studio design, so that (3) has full height.
如何在 Android Studio 设计中移除 ActionBar (1) 并将其替换为工具栏 (2),以便 (3) 具有全高。
Here are my xml and java files, looks like a lot but they are 90% default values. I set AppTheme theme in styles.xml which is derived from Theme.AppCompat.Light.DarkActionBar and in manifest I tell compiler to use AppTheme.NoActionBar for activity theme.
这是我的 xml 和 java 文件,看起来很多,但它们是 90% 的默认值。我在从 Theme.AppCompat.Light.DarkActionBar 派生的 style.xml 中设置 AppTheme 主题,在清单中我告诉编译器使用 AppTheme.NoActionBar 作为活动主题。
activity_unlock.xml
活动_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
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
解锁Activity.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
安卓清单
<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>
采纳答案by michnovka
This was quite easy in the end. I just changed styles.xml
from
这最终很容易。我只是改变了styles.xml
从
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
to
到
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
I have no idea why this affects designer view, as when launched, both versions provide identical layout without actionbar (as I use AppTheme.NoActionBar
which is defined in styles.xml
) I guess it is an Android Studio design rendering bug.
我不知道为什么这会影响设计器视图,因为在启动时,两个版本都提供相同的布局而没有操作栏(正如我AppTheme.NoActionBar
在 中定义的那样styles.xml
)我猜这是一个 Android Studio 设计渲染错误。
回答by Andrew Gallasch
As you may instantiate a layout in any number of ways with any style you can view how your layout looks in different styles by clicking the button as shown in the image. If you don't set another style or theme in your code then the theme in your manifest will be used.
由于您可以使用任何样式以多种方式实例化布局,因此您可以通过单击图像中所示的按钮来查看布局在不同样式下的外观。如果您没有在代码中设置其他样式或主题,则将使用清单中的主题。