2014-12-12 12 views
8

Sto utilizzando la libreria AppCompat v21 per creare un'interfaccia simile a Lollipop nella mia app Android.
Finora funziona alla grande.Barra degli strumenti sovrapposti sopra il contenuto dell'attività

Ora voglio che la barra degli strumenti venga visualizzata sopra i miei contenuti in una delle mie attività.
Tuttavia, non riesco a farlo funzionare. Questo è quello che ho finora:

Disposizione di attività:

<LinearLayout 
    android:id="@+id/main_parent_view" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:theme="@style/myAppTheme"> 
    <include layout="@layout/toolbar_setlist_top"/> 
    <ImageView 
     android:id="@+id/image" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent"/> 
</LinearLayout> 

Layout della barra degli strumenti:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    app:theme="@style/MyActionBar" 
    app:popupTheme="@style/MyActionBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_marginTop="0dp" /> 

Tema:

<resources> 
    <style name="myAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/primaryColor</item> 
     <item name="colorPrimaryDark">@color/primaryColorDark</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
     <item name="android:activatedBackgroundIndicator">@drawable/list_selector</item> 
     <item name="actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
     <item name="spinBars">true</item> 
     <item name="color">@android:color/white</item> 
    </style> 

    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> 
     <item name="android:background">@color/primaryColor2</item> 
     <item name="android:windowActionBarOverlay">true</item> 
     <!-- Support library compatibility --> 
     <item name="background">@color/primaryColor2</item> 
     <item name="windowActionBarOverlay">true</item> 
    </style> 
</resources> 

Codice:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_setlist); 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
} 

risposta

18

Se si desidera posizionare la barra degli strumenti sulla parte superiore del suo sito web è possibile utilizzare un FrameLayout come questo:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/main_parent_view" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 


     <ImageView 
      android:id="@+id/image" 
      android:layout_height="100dp" 
      android:layout_width="40dp" 
      android:background="#000"/> 
    </LinearLayout> 
    <include layout="@layout/toolbar_setlist_top"/> 
</FrameLayout> 
+0

Sì, questo lo dit. Grazie! –

+0

Grazie, la tua risposta mi ha aiutato a superare lo stesso problema. Tuttavia, una cosa non è ancora chiara: è davvero fondamentale utilizzare FrameLayout? Non può essere fatto usando un layout relativo o lineare? – webgenius

+0

@webgenius sì, può, utilizzando un layout relativo. Lo stesso concetto. –

1

Non sembra che si sta acquisendo un riferimento alla visualizzazione della barra degli strumenti nel layout ovunque. Hai bisogno di trovare la vista prima, quindi passare tale riferimento al metodo setSupportActionBar:

setContentView(R.layout.activity_setlist); 
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
+0

Oops, in realtà ho questa linea, ma deve essersi persa durante la copia su questo sito web. Modificato il codice –

1

Supponendo che quando si dice "Ora voglio che la barra degli strumenti venga visualizzata sopra i miei contenuti in una delle mie attività" si sta tentando di utilizzare la barra degli strumenti come ActionBar della propria attività (anziché ActionBar precedente/originale) è necessario tema principale del tema "Theme.AppCompat.NoActionBar" al posto dell'impostazione corrente * .Light.DarkActionBar. Spero che questo ti aiuti.

+1

Questo ha risolto un problema che avevo con il colore del titolo nella barra degli strumenti, ma sfortunatamente la barra degli strumenti continua a spingere verso il basso l'immagine, invece di essere sopra. Potrebbe esserci un problema nel mio layout XML? –

Problemi correlati