2015-10-02 10 views
9

Ho un'applicazione nel nuovo Android Studio 1.4 (tuttavia questo problema era presente anche alla 1.3.2) e ho deciso di utilizzare la barra degli strumenti invece della barra delle azioni a causa delle funzionalità estese.Perché Android Studio mostra sempre ActionBar nella progettazione di app, anche quando è disabilitato?

Ho impostato sia xml che java di conseguenza per nascondere la barra di azione e, una volta compilato, non è presente, invece la barra degli strumenti è in alto dove dovrebbe apparire ActionBar. Ma in vista del disegno lo vedo ancora e non c'è modo di rimuoverlo. Questo mi infastidisce, poiché nasconde parte dell'area di progettazione e non ho abbastanza spazio per tutti i miei elementi.

Come rimuovere ActionBar (1) e farlo sostituire con la barra degli strumenti (2) nel progetto Android Studio, in modo che (3) abbia l'altezza completa.

Android Stdui XML design

Qui sono i miei file XML e Java, si presenta come un sacco, ma sono il 90% i valori di default. Ho impostato il tema AppTheme in styles.xml, che è derivato da Theme.AppCompat.Light.DarkActionBar e in manifest dico al compilatore di utilizzare AppTheme.NoActionBar per il tema dell'attività.

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

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

risposta

8

Come è possibile creare un'istanza di un layout in qualsiasi numero di modi con qualsiasi stile, è possibile visualizzare l'aspetto del layout in diversi stili facendo clic sul pulsante come mostrato nell'immagine. Se non si imposta un altro stile o tema nel codice, verrà utilizzato il tema nel file manifest.

enter image description here

+0

Dead on! Se scelgo AppTheme.NoActionBar, funziona come dovrebbe. Non ho visto l'opzione quando ho aperto questa opzione, era nascosta sotto i temi del progetto. –

+0

Ma ovviamente questo è esattamente come appare. Hai ancora bisogno di cambiare il tema come mostrato nella risposta per l'app stessa per riflettere questo stile! – Andy

7

Questo è stato abbastanza facile, alla fine. Ho appena cambiato styles.xml da

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

a

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

Non ho idea del perché questo influenza vista di design, come una volta lanciato, entrambe le versioni forniscono il layout identico senza ActionBar (come io uso AppTheme.NoActionBar che è definito in styles.xml) Suppongo che sia un bug di rendering del progetto Android Studio.

+0

non avrei davvero chiamare un bug. L'anteprima è solo lì per mostrarti come si presenta il tuo layout. Semplicemente non si preoccupa di controllare la presenza di qualcosa come se non dovrebbe visualizzare la barra di azione perché non è il suo scopo. – BooleanCheese

+1

Ma il mio layout specifica windowActonBar false, quindi dovrebbe renderlo senza di esso –

Problemi correlati