2013-08-26 7 views
18
में

मैं अपने अनुप्रयोग में ActionBarCompat उपयोग कर रहा हूँ हमेशा से पता चला रहे हैं, एक मैं कार्रवाई बार में एक या दो आइटम दिखाने के लिएआइटम ओवरफ्लो

मैं गूगल डेवलपर्स की गाइड follwed चाहते हैं, लेकिन जब मैं यह परीक्षण , आइटम "ओवरफ़्लो" विकल्प (नेक्सस 4 में) में दिखाए जाते हैं और यदि मैं मौजूद हूं तो मेनू बटन पर टैप करें (उदा। गैलेक्सी एस 3)

मैं क्या गलत कर रहा हूं?

समाधान

आप एक जवाब में पा सकते हैं।

+2

समाधान को वास्तविक उत्तर के रूप में पोस्ट करने के लिए बेहतर है। –

+0

@ मार्ककार्टर "कुछ" समय के बाद .. मैं आपका अनुरोध देखता हूं, और मैंने जवाब के लिए प्रश्न को अलग करने के लिए अपनी पोस्ट संपादित की है। सुझाव के लिए धन्यवाद (थोड़ा देर हो चुकी है)। – Shudy

उत्तर

0

मैंने पाया समाधान तो मैं जवाब के रूप में तैनात:

समाधान

पाया मेनू के एक्सएमएल में, आप नए नाम स्थान डाल करने के लिए, actionbarcompat काम करने के लिए किया है। ऐसे में कुछ विकल्प हैं जिन्हें "एंड्रॉइड" के बजाय इस स्पेसनाम की आवश्यकता है। तो समाधान यह है:

पुरानी लॉग इन मेनू:

<item 
     android:id="@+id/action_register" 
     android:showAsAction="always" 
     android:title="@string/login_menu_register"/> 

नया लॉगिन मेनू (समाधान) (कैसे caled है "showAsAction" को देखो)

<item 
     android:id="@+id/action_register" 
     shudy:showAsAction="always" 
     android:title="@string/login_menu_register"/> 

login.xml (मेन्यू)

<item 
    android:id="@+id/action_register" 
    android:showAsAction="always" 
    android:title="@string/login_menu_register"/> 
<item 
    android:id="@+id/action_register2" 
    android:showAsAction="always" 
    android:title="miau"/> 

LoginActivity.java

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     SLog.d(CLASS_NAME + " onCreate()"); 
     setContentView(R.layout.activity_login); 
     actionBar = getSupportActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     actionBar.setHomeButtonEnabled(true); 
     findViews(); 
     buttons(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.login, menu); 
     return true; 
    } 

प्रकट

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.AppCompat.Light.DarkActionBar" > 
     <activity 
      android:name="com.shudy.myworld.LoginActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

enter image description hereenter image description here

0

मुझे लगता है कि आपको इन कार्यों के लिए आइकन प्रदान करने की आवश्यकता है ताकि वे एक्शन बार में दिखाई दे सकें।

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:shudy="http://schemas.android.com/apk/res-auto" > 

<item 
    android:id="@+id/action_register" 
    android:showAsAction="always" 
    android:icon="@drawable/some_icon" 
    android:title="@string/login_menu_register" /> 
<item 
    android:id="@+id/action_register2" 
    android:showAsAction="always" 
    android:icon="@drawable/some_icon2" 
    android:title="miau" /> 

</menu> 
+0

काम नहीं करता है: एस लेकिन मुझे समाधान मिला;) मैं अपने उत्तर को सभी को – Shudy

0

सवाल जवाब शामिल करने के लिए अद्यतन किया गया है, लेकिन जो कोई आधिकारिक दस्तावेज में रुचि रखता है के लिए, http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems देख सकते हैं और showAsAction विशेषता के लिए एक कस्टम नाम स्थान का उपयोग कर के बारे में टिप्पणी करने के लिए विशेष ध्यान देना।

0
<item 
    android:id="@+id/ok" 
    android:icon="@drawable/ic_ok" 
    android:orderInCategory="0" 
    android:showAsAction="ifRoom" 
    android:title="OK"/> 
3

मैं एक ही समस्या थी, और पाया दो समाधान:

मेनू एक्सएमएल (Login.xml), showAsAction टैग के लिए अपने अनुप्रयोग नाम का उपयोग में:

के बजाय:

<item 
    android:id="@+id/action_register" 
    android:showAsAction="always" 
    android:icon="@drawable/some_icon" 
    android:title="@string/login_menu_register" /> 

उपयोग:

<item 
    android:id="@+id/action_register" 
    yourappname:showAsAction="always" 
    android:icon="@drawable/some_icon" 
    android:title="@string/login_menu_register" /> 

मुझे लगता है कि आपके एप्लिकेशन का नाम छायादार है।

मेरे लिए दूसरा समाधान, गतिविधि वर्ग पर, onCreateOptionsMenu() पर

public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(
    getMenuInflater().inflate(R.menu.main, menu); 
    MenuItem registerMenuItem = menu.findItem(R.id.action_register); 
    registerMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); // change this in backcompat 
    return true; 
} 

अगर आप backCompatibility उपयोग कर रहे हैं, अंतिम पंक्ति को बदलने:

MenuItemCompat.setShowAsAction(registerMenuItem,MenuItemCompat.SHOW_AS_ACTION_ALWAYS); 
+0

के लिए उपलब्ध कराने के लिए संपादित करूँगा प्रोग्रामेटिक रूप से 'सेटशोएएक्शन' को कॉल करने के लिए मुझे आवश्यक जादू सॉस था। मुझे आश्चर्य है कि एक्सएमएल क्यों काम नहीं कर रहा था। ऐप कंपैट का उपयोग करते समय मेरे कुछ एक्सएमएल में – Synesso

+0

, एंड्रॉइड संस्करण के आधार पर उपसर्ग एंड्रॉइड की आवश्यकता है और कभी-कभी नहीं। जहां तक ​​मुझे याद है, एंड्रॉइड: पृष्ठभूमि एंड्रॉइड <12 में काम नहीं कर रहा है और आपको केवल पृष्ठभूमि का उपयोग करने की आवश्यकता है। यह मुझे देखता है कि वही बात यहां हो रही है। –

0

हम घुला हुआ पदार्थ करने के दो तरीके यह समस्या।

  1. आपको libs "ActionBarSherlock" जोड़ने की आवश्यकता है। यह ActionbarSherlock का उपयोग है।

या 2. आपको libs "android-support-v7" जोड़ने की आवश्यकता है। यदि आप पसंद इस विधि है, तो अपने menu.xml इस तरह की जरूरत है:

<?xml version="1.0" encoding="UTF-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:v7="http://schemas.android.com/apk/res-auto" > 
<item 
    android:id="..." 
    android:icon="..." 
    android:showAsAction="always" 
    android:title="..." 
    v7:showAsAction="always"/> 
</menu> 
0

यह तब भी एंड्रॉयड टूलबार के लिए AppCompat-V21 और एपीआई का स्तर 21 और इसके बाद के संस्करण में नई सामग्री डिज़ाइन अवधारणाओं में है।

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