2014-10-29 33 views
13

यह मेरा पहला स्टैक ओवरफ़्लो प्रश्न है। मेरे साथ सावधान रहें यदि मैं पर्याप्त नहीं जोड़ता या मैं बहुत अधिक विस्तार जोड़ता हूं।एंड्रॉइड ओवरफ्लो मेनू एक्शनबार/टूलबार के ऊपर स्थित है?

मैं अपने ऐप में शीर्ष बार के नीचे दिखाई देने के लिए अपना ओवरफ़्लो मेनू प्राप्त करने का प्रयास कर रहा हूं। जब मैं होलो थीम का उपयोग कर रहा था तो यह ठीक था, लेकिन मैं ऐपकंपैट v7 लाइब्रेरी का उपयोग करके भौतिक डिज़ाइन का उपयोग करने के लिए अपना ऐप प्राप्त करने की कोशिश कर रहा हूं।

तो मेरी विषय अब AppCompat से लागू होता है:

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

और यह ठीक से इस लेआउट में मेरी टूलबार में सामग्री डिजाइन विषय लागू होता है:

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

लेकिन किसी कारण से, मेनू मैं CrateOptionsMenu में बढ़ोतरी गलत जगह पर दिखाई देता है। जाहिर है, मैं छवियों को पोस्ट नहीं कर सकता लेकिन मूल रूप से ओवरफ्लो मेनू टूलबार के नीचे दिखाई देने के बजाय टूलबार को कवर करता है। यह तब शुरू हो रहा था जब मैं "Theme.AppCompat" का उपयोग पहले सामान्य एक्शनबार में और अब भी टूलबार के साथ करता हूं।

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); 
      } 

किसी को यह भी अनुभव करने में प्रतीत नहीं होता है, मुझे आशा है कि कोई मुझे यह समझने में मदद कर सकता है! धन्यवाद!

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

उत्तर

19

प्रति Material Design specifications (मेनू अनुभाग देखें):

एक मेनू कागज के एक अस्थायी चादर कि हमेशा एप्लिकेशन बार overlaps है

यहाँ मेरी मेनू में से एक का एक उदाहरण है ऐप बार के विस्तार के रूप में व्यवहार करने के बजाय।

Menu overlap app bar

तो क्या आप देख रहे हैं मेनू के लिए सही सामग्री डिजाइन है।

+1

धन्यवाद लेकिन मैं पहले से ही अपनी मुख्य गतिविधि में ऐसा कर रहा हूं। ऐसा नहीं है कि मेनू काम नहीं करता है, यह सिर्फ गलत दिखता है: http://i.imgur.com/0ybW1A9.png – Tania

+0

मेरा स्क्रीनशॉट दिए गए मेरे उत्तर को अपडेट किया गया: आप जो देख रहे हैं वह एक सामग्री डिज़ाइन मेनू है। – ianhanniballake

+0

ओह डर्न, मेरे द्वारा लागू किए गए ऐप्स का अनुमान लगाएं मैटेरियल डिज़ाइन ने मुझे गलत विचार दिया है। धन्यवाद!! – Tania

0

आप प्रकट में गतिविधि का विषय बदलते हैं तो अतिप्रवाह मेनू ActionBar

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

कुछ सरल कदम नीचे आता है की तुलना में मैनिफ़ेस्ट फ़ाइल Android और गतिविधि जिसमें आपके लटकती मेनू मौजूद है के लिए खोज करने के लिए जाओ, मेरा के लिए यह स्वागत गतिविधि है अब नियंत्रण दबाएँ और विषय नाम

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

आप जहां अपने विषय एक बार y लिखा है फ़ाइल शैलियों पर आ जाएगा पर क्लिक करें कहां वहाँ जाते हैं, आप

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

अब इन दो मदों वहाँ

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

पेस्ट और आप कर रहे हैं ...

पीएस: दुर्भाग्य से मैं यहां स्क्रीनशॉट साझा नहीं कर सकता, ऐसा लगता है कि एसओ छवियों को जोड़ने पर कुछ त्रुटि दे रहा है। लेकिन आप इस लिंक पर देख सकते हैं Image File

संबंधित मुद्दे