2014-10-29 7 views
13

Bu, ilk yığın taşma sorusu. Yeterli eklemezsem ya da çok fazla ayrıntı eklediğimde benimle çıplak ol.Android taşma menüsü, actionbar/araç çubuğunun üstünde mi konumlandırıldı?

Taşma menümüm, uygulamasındaki en üstteki çubuğun altında görünmesini sağlamaya çalışıyorum. Holo temasını kullandığımda, bunu gayet iyi yaptım, fakat appcompat v7 kütüphanesini kullanarak materyal tasarımımı kullanmaya çalışıyorum.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- the theme applied to the application or activity --> 
    <style name="CustomActionBarTheme" 
      parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/ucla_blue</item> 
     <item name="colorAccent">@color/caldroid_white</item> 
     <item name="android:actionMenuTextColor">@color/caldroid_black</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
    </style> 
</resources> 

Ve bu düzgün bu düzendeki benim araç çubuğuna malzeme tasarımı temasını geçerlidir:

Yani benim tema şimdi AppCompat uzanan

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/linearlayout_root_main" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"> 
    <!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. --> 
    <android.support.v4.widget.DrawerLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/drawer_layout" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     tools:context="com.ucla.ieee.app.MainActivity"> 

     <LinearLayout 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:orientation="vertical"> 

      <android.support.v7.widget.Toolbar 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:background="?attr/colorPrimary" 
       android:id="@+id/toolbar" 
       android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:minHeight="?attr/actionBarSize" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 
      <!-- As the main content view, the view below consumes the entire 
      space available using match_parent in both dimensions. --> 
      <FrameLayout 
       android:id="@+id/container" 
       android:layout_height="match_parent" 
       android:layout_width="match_parent"/> 
     </LinearLayout> 


     <!-- The navigation drawer --> 
     <fragment 
      android:id="@+id/navigation_drawer" 
      android:layout_gravity="start" 
      android:layout_height="match_parent" 
      android:layout_marginTop="?attr/actionBarSize" 
      android:layout_width="@dimen/navigation_drawer_width" 
      android:name="navigation.NavigationDrawerFragment" 
      tools:layout="@layout/fragment_navigation_drawer"/> 

    </android.support.v4.widget.DrawerLayout> 
</LinearLayout> 

Ama nedense, menü I onCreateOptionsMenu içinde şişirmek yanlış yerde görünür. Görünüşe göre görüntüleri gönderemiyorum ama temel olarak taşma menüsü, araç çubuğunun hemen altında görünmek yerine araç çubuğunu kaplıyor. Bu, "Theme.AppCompat" ı ilk kez normal bir ActionBar'da ve hatta şimdi bir Araç Çubuğunda kullandığımda başlamaya başladı.

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      switch (selected) { 
       case FRONT_PAGE: 
        toolbar.inflateMenu(R.menu.main_settings); 
        return false; 
       case ANNOUNCEMENTS: 
        toolbar.inflateMenu(R.menu.refresh_settings); 
        return false; 
       case MEMBERSHIP: 
        toolbar.inflateMenu(R.menu.edit_member); 
        return false; 
       case CALENDAR: 
        toolbar.inflateMenu(R.menu.refresh_settings); 
        return false; 
       case POINTS_REWARDS: 
        toolbar.inflateMenu(R.menu.main_settings); 
        return false; 
       case HELP: 
        toolbar.inflateMenu(R.menu.main_settings); 
        return false; 
       default: 
        toolbar.inflateMenu(R.menu.main_settings); 
      } 

Bunu yaşayan birilerini bulamıyor gibiyse, umarım birisi bunu anlamaya yardımcı olabilir! Teşekkürler!

<menu 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" 
    tools:context="com.ucla_ieee.app.MainActivity"> 
    <item android:id="@+id/action_refresh" 
      android:title="@string/action_refresh" 
      app:showAsAction="never" /> 
</menu> 

cevap

19

Material Design specifications Başına (Menüler bölümüne bakınız):

bir menü her zaman uygulama çubuğunu örtüşür bir kağıt geçici levha İşte

benim menülerin birinden bir örnek Uygulama çubuğunun bir uzantısı olarak davranmak yerine. Menu overlap app bar

Peki görüyoruz menüler için doğru malzeme tasarımdır.

+1

Teşekkürler, ancak bunu ana faaliyetimde gerçekleştirdim. Bu menü çalışmıyor, sadece yanlış görünüyor: http://i.imgur.com/0ybW1A9.png – Tania

+0

Ekran görüntüsü verilen cevabımı güncellendi: Gördüğünüz şey bir Malzeme Tasarım menüsü. – ianhanniballake

+0

Ah, sanırım benim hayata geçirdiğim uygulamalar Materyal Tasarımı bana yanlış fikir verdi. Teşekkürler!! – Tania

0

taşma menüsü bildirim dosyasını android ve açılır menü mevcut olduğu aktivite aramak git İşlem Çubuğu

android:theme="@android:style/Theme.Holo.Light" 
0

Bazı basit adımlar aşağıda gelir yerine, maden için bu Şimdi kumanda basın ve temaya y kez yazılı olduğu dosya stillerine hareket edecek

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

tema adını tıklayın karşılama Etkinlik var ou ... Eğer

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

Şimdi yapılır orada

<item name="overlapAnchor">false</item> 
<item name="android:dropDownVerticalOffset">5.0dp</item> 

bu iki öğe yapıştırın ve, oraya gitmek

P.S: Maalesef ekran görüntüsünü burada paylaşamıyorum, görüntü eklemede bazı hatalar veriyor gibi görünüyor. Ancak bu bağlantıda görebilirsiniz