78

पर ड्रॉपडाउन आइटम को कैसे जोड़ें मेरे एंड्रॉइड हनीकॉम एप्लिकेशन में मैं टैब को नेविगेशन शैली के रूप में उपयोग करता हूं। मैं ओवरफ़्लो बटन के बगल में एक आइटम जोड़ना चाहता हूं, लेकिन मैं चाहता हूं कि वह आइटम ड्रॉपडाउन सूची हो, और उपयोगकर्ता वहां एक विकल्प चुनने में सक्षम होगा, लेकिन नेविगेशन से संबंधित नहीं है। सबसे आसान तरीका क्या है क्योंकि मैं mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);एक्शन बार

का उपयोग कर रहा हूं क्या कस्टम दृश्य का उपयोग किए बिना ऐसा करना संभव है?

+0

4 लिंक की जाँच करें: ये लिंक आप के लिए मदद http: //fizzylogic.azurewebsites .NET/2012/03/05/mono-for-android-by-example-the-action-bar/https://github.com/StylingAndroid/StylingActionBar https://github.com/StylingAndroid/BasicActionBar – Kumar

उत्तर

206

पहले विकल्प:

मेनू/options.xml:

<item 
    android:icon="@drawable/ic_menu_sort" 
    android:showAsAction="ifRoom"> 
    <menu> 
     <item 
      android:id="@+id/menuSortNewest" 
      android:title="Sort by newest" /> 
     <item 
      android:id="@+id/menuSortRating" 
      android:title="Sort by rating" /> 
    </menu> 
</item> 

दूसरा विकल्प:

मेनू/options.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/menuSort" 
     android:showAsAction="ifRoom" 
     android:actionLayout="@layout/action_sort" /> 
</menu> 

लेआउट/action_sort.xml: मेनू संसाधनों के लिए

<Spinner xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/ic_menu_refresh" 
    android:entries="@array/order" /> 

डॉक्स - http://developer.android.com/guide/topics/resources/menu-resource.html

+1

उन सबमेनस एजी हैं रीट टिप! मुझे अनुसंधान और काम के घंटे बचाया, धन्यवाद! – damaxxed

+0

महान जवाब! बीटीडब्ल्यू, आप उपमेनू में आइकन भी शामिल कर सकते हैं। –

+5

मैं स्पिनर के एक क्लिक का जवाब कैसे दूं? – gregm

28
बिल्कुल

सबसे अच्छा और सबसे सरल और जवाब मैं अब तक पाया जाता है here

असल में, इस मामले में कस्टम लेआउट की कोई आवश्यकता नहीं है। बस actonViewClass सेट:

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

    <item android:id="@+id/spinner" 
    yourapp:showAsAction="ifRoom" 
    yourapp:actionViewClass="android.widget.Spinner" /> <== this is all that's required 
</menu> 

और फिर onCreateOptionsMenu में इसे संभाल, हमेशा की तरह:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_layout, menu); 
    MenuItem item = menu.findItem(R.id.spinner); 
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); // get the spinner 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(onItemSelectedListener); 

यह अभी तक का सबसे सरल और साफ समाधान कर रहा है। मूल लेखक फ्रैंकोइस पोयर को क्रेडिट।

+0

परीक्षण और अनुमोदित। –

0

यह लटकती रूप में काम करेंगे केवल

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <!--<item--> 
    <!--android:id="@+id/save_contact"--> 
    <!--android:icon="@drawable/edit_new"--> 
    <!--android:title="Save Contact"--> 
    <!--app:showAsAction="never" />--> 

    <item 
     android:id="@+id/send_money" 
     android:icon="@drawable/edit_new" 
     android:title="Send Money" 
     app:showAsAction="never" /> 

    <item 
     android:id="@+id/request_money" 
     android:icon="@drawable/edit_new" 
     android:title="Request money" 
     app:showAsAction="never" /> 

    <item 
     android:id="@+id/recharge" 
     android:icon="@drawable/edit_new" 
     android:title="Recharge" 
     app:showAsAction="never" /> 
</menu> 
टुकड़ा अंदर

setHasOptionsMenu (सच)

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.chat_details_menu, menu); 


    super.onCreateOptionsMenu(menu, inflater); 
} 
संबंधित मुद्दे