खोज…


वाक्य - विन्यास

  • inflater.inflate (R.menu.your_xml_file, menu);

पैरामीटर

पैरामीटर विवरण
inflate(int menuRes, Menu menu) निर्दिष्ट XML संसाधन से एक मेनू पदानुक्रम को फुलाएँ।
getMenuInflater () इस संदर्भ में एक MenuInflater देता है।
onCreateOptionsMenu (Menu menu) गतिविधि के मानक विकल्प मेनू की सामग्री को प्रारंभ करें। आपको अपने मेनू आइटम को मेनू में रखना चाहिए।
onOptionsItemSelected (MenuItem item) जब भी आपके विकल्प मेनू में किसी आइटम का चयन किया जाता है तो यह विधि कहलाती है

टिप्पणियों

मेनू के बारे में अधिक जानने के लिए पढ़ने के लिए इस । आशा करता हूँ की ये काम करेगा!

डिवाइडर के साथ विकल्प मेनू

एंड्रॉइड में एक डिफ़ॉल्ट विकल्प मेनू है, जो कई विकल्प ले सकता है। यदि बड़ी संख्या में विकल्पों को प्रदर्शित करने की आवश्यकता होती है, तो यह स्पष्टता बनाए रखने के लिए उन विकल्पों को समूह बनाने के लिए समझ में आता है। उनके बीच डिवाइडर (यानी क्षैतिज रेखाएं) डालकर विकल्पों को समूहीकृत किया जा सकता है। डिवाइडर के लिए अनुमति देने के लिए, निम्नलिखित विषय का उपयोग किया जा सकता है:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>
</style>
<style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
    <item name="android:divider">@color/black</item>
    <item name="android:dividerHeight">1dp</item>
</style>

थीम को बदलकर, मेनू में डिवाइडर को जोड़ा जा सकता है।

मेनू में कस्टम फ़ॉन्ट लागू करें

public static void applyFontToMenu(Menu m, Context mContext){
    for(int i=0;i<m.size();i++) {
        applyFontToMenuItem(m.getItem(i),mContext);
    }
}
public static void applyFontToMenuItem(MenuItem mi, Context mContext) {
    if(mi.hasSubMenu())
        for(int i=0;i<mi.getSubMenu().size();i++) {
            applyFontToMenuItem(mi.getSubMenu().getItem(i),mContext);
        }
    Typeface font = Typeface.createFromAsset(mContext.getAssets(), "fonts/yourCustomFont.ttf");
    SpannableString mNewTitle = new SpannableString(mi.getTitle());
    mNewTitle.setSpan(new CustomTypefaceSpan("", font, mContext), 0, mNewTitle.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    mi.setTitle(mNewTitle);
}

और फिर गतिविधि में:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    applyFontToMenu(menu,this);
    return true;
}

एक गतिविधि में एक मेनू बनाना


अपने स्वयं के मेनू को परिभाषित करने के लिए, अपने प्रोजेक्ट के res/menu/ निर्देशिका के अंदर एक XML फ़ाइल बनाएँ और निम्नलिखित तत्वों के साथ मेनू बनाएँ:

  • <menu> : एक मेनू को परिभाषित करता है, जो सभी मेनू आइटम रखता है।
  • <item> : एक MenuItem बनाता है, जो एक मेनू में एकल आइटम का प्रतिनिधित्व करता है। हम सबमेन्यू बनाने के लिए नेस्टेड एलिमेंट भी बना सकते हैं।

चरण 1:

निम्नलिखित के रूप में अपनी स्वयं की xml फ़ाइल बनाएँ:

res/menu/main_menu.xml :

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/aboutMenu"
        android:title="About" />
    <item
        android:id="@+id/helpMenu"
        android:title="Help" />
    <item
        android:id="@+id/signOutMenu"
        android:title="Sign Out" />
</menu>

चरण 2:

विकल्प मेनू निर्दिष्ट करने के लिए, अपनी गतिविधि में onCreateOptionsMenu() को ओवरराइड करें।

इस पद्धति में, आप अपने मेनू संसाधन को बढ़ा सकते हैं (अपनी XML फ़ाइल में परिभाषित किया जा सकता है, res/menu/main_menu.xml )

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

जब उपयोगकर्ता विकल्प मेनू से किसी आइटम का चयन करता है, तो सिस्टम आपकी गतिविधि की ओवरराइड onOptionsItemSelected() विधि कहता है।

  • यह विधि चुने गए MenuItem से गुजरती है।
  • आप getItemId() कॉल करके आइटम की पहचान कर सकते हैं, जो मेनू आइटम के लिए अद्वितीय आईडी देता है ( android:id attribute द्वारा परिभाषित android:id attribute मेनू संसाधन में android:id attribute - res/menu/main_menu.xml ) * /
 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.aboutMenu:
            Log.d(TAG, "Clicked on About!");
            // Code for About goes here
            return true;
        case R.id.helpMenu:
            Log.d(TAG, "Clicked on Help!");
            // Code for Help goes here
            return true;
        case R.id.signOutMenu:
            Log.d(TAG, "Clicked on Sign Out!");
            // SignOut method call goes here
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

समेट रहा हु!

आपका Activity कोड नीचे जैसा दिखना चाहिए:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "mytag";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.aboutMenu:
                Log.d(TAG, "Clicked on About!");
                // Code for About goes here
                return true;
            case R.id.helpMenu:
                Log.d(TAG, "Clicked on Help!");
                // Code for Help goes here
                return true;
            case R.id.signOutMenu:
                Log.d(TAG, "User signed out");
                // SignOut method call goes here
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

आपका अपना मेनू कैसा दिखता है इसका स्क्रीनशॉट:

SampleMenuApp



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow