एक्शन बार पर ड्रॉपडाउन आइटम कैसे जोड़ें


82

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

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


4 लिंक की जाँच करें: ये लिंक आपके लिए fizzylogic.azurewebsites.net/2012/03/05/… github.com/StylingAndroid/StylingActionBar github.com/StylingAndroid/ByicActionBar
कुमार

जवाबों:


221

पहला विकल्प:

मेनू / 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


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

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

2
यह एंड्रॉइड 2.2 के लिए काम नहीं करता है। ऐप क्रैश हो रहा है। क्या आपके पास एक समाधान है?
टोबियास

3
ActionBarSherlock का उपयोग करें ... उन्होंने Android 2.2 में ActionBar वापस पेश नहीं किया था और इसलिए ActionBarSherlock आपको इन सुविधाओं को वापस करने की अनुमति देता है। Actionbarsherlock.com
edwoollard

4
@ संदीप मारम आप Spinner spinner = (Spinner)menu.findItem(R.id.menuPeriodType).getActionView()में स्पिनर आ सकते हैं onCreateOptionsMenu()। फिर आइटम का चयन श्रोता सेट करें।
लहिरू चंदिमा

34

अब तक का सबसे अच्छा और सबसे सरल उत्तर जो मुझे मिला, वह यहाँ है

मूल रूप से, इस मामले में कस्टम लेआउट की कोई आवश्यकता नहीं है। बस 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

यह केवल ड्रॉपडाउन के रूप में काम करेगा

<?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);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.