Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में ओवरफ्लो मेनू आइकन को प्रोग्रामेटिकली कैसे बदलें?

Android में Toolbar और मेनू आइटम कस्टमाइज़ करने का गाइड

यह ट्यूटोरियल दिखाता है कि कैसे Toolbar सेट करके, मेनू रिसोर्स से आइटम इन्फ्लेट करके और onPrepareOptionsMenu में मेनू आइटम की दृश्यता/आइकन डायनामिकली बदले जाएं।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनकर नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल में Toolbar जोड़ें

res/layout/activity_main.xml में:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.v7.widget.Toolbar>
</LinearLayout>

चरण 3: MainActivity.java में कोड जोड़ें

src/MainActivity.java में:

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Toolbar toolbar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle("MyToolBar");
        toolbar.setTitleTextColor(Color.WHITE);
        setSupportActionBar(toolbar);
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.option1:
                Toast.makeText(getApplicationContext(), "Bluetooth Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.option2:
                Toast.makeText(getApplicationContext(), "Call Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.option3:
                Toast.makeText(getApplicationContext(), "About Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.option4:
                Toast.makeText(getApplicationContext(), "Chat Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        invalidateOptionsMenu();
        menu.findItem(R.id.option2).setVisible(false);
        menu.findItem(R.id.option4).setVisible(true);
        return super.onPrepareOptionsMenu(menu);
    }
}

चरण 4: मेनू रिसोर्स फ़ाइल (res/menu/mymenu.xml)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/option1"
        android:orderInCategory="1"
        android:title="Bluetooth"
        android:icon="@drawable/ic_bluetooth"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/option2"
        android:orderInCategory="2"
        android:title="Call"
        android:icon="@drawable/ic_call"
        app:showAsAction="ifRoom|collapseActionView" />
    <item
        android:id="@+id/option4"
        android:title="Chat"
        android:visible="false"
        android:orderInCategory="3"
        android:icon="@drawable/ic_chat"
        app:showAsAction="ifRoom|collapseActionView"/>
    <item
        android:id="@+id/option3"
        android:title="About"
        app:showAsAction="never" />
</menu>

मुख्य बिंदु

  • setSupportActionBar(toolbar) टूलबार को एक्शन बार के रूप में सेट करता है
  • onCreateOptionsMenu मेनू बनाता है (एक बार)
  • onPrepareOptionsMenu हर बार मेनू खुलने से पहले कॉल होता है - यहां दृश्यता/सक्षमता बदलें
  • invalidateOptionsMenu() मेनू को रीफ्रेश करने के लिए कॉल करें
  • app:showAsAction - ifRoom: जगह हो तो दिखाएं, never: ओवरफ्लो में, always: हमेशा दिखाएं

चरण 5: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

ऐप चलाएं

डिवाइस कनेक्ट करें, Run आइकन पर क्लिक करें, टूलबार पर मेनू आइकन देखें और ओवरफ्लो मेनू खोलकर आइटम चुनें।

ड्रॉएबल संसाधन

सुनिश्चित करें कि res/drawable/ में ic_bluetooth, ic_call, ic_chat नामक ड्रॉएबल संसाधन मौजूद हैं।

  1. Android ऐप को प्रोग्रामेटिकली कैसे बंद करें? Android ऐप को प्रोग्रामेटिकली कैसे बंद करें?

    यह उदाहरण दर्शाता है कि Android ऐप को बटन क्लिक पर प्रोग्रामेटिकली कैसे बंद किया जाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=https://schemas

  1. एंड्रॉइड 12 में ऐप आइकन शेप कैसे बदलें एंड्रॉइड 12 में ऐप आइकन शेप कैसे बदलें

    एंड्रॉइड फोन पर आइकन शेप बदलना अपने फोन में थोड़ा पर्सनलाइजेशन जोड़ने का एक सरल लेकिन प्रभावी तरीका है। हालांकि, एंड्रॉइड 12 के बाद से, ऐसा प्रतीत होता है कि आइकन शेप बदलने के सभी विकल्प हटा दिए गए हैं। क्या आप एंड्रॉइड में अब आइकन कस्टमाइज़ नहीं कर सकते? खैर, लगभग। आज हम देखेंगे कि एंड्रॉइड 12 के म

  1. Android पर कीबोर्ड कैसे बदलें? Android पर कीबोर्ड कैसे बदलें?

    अनुकूलन Android OS के उद्भव की रीढ़ है और एक ऐसी विशेषता है Android फोन पर डिफ़ॉल्ट या स्टॉक कीबोर्ड को बदलना। यह परिवर्तन फोन के ब्रांड की परवाह किए बिना किया जा सकता है जैसे Samsung, Google, Huawei, Xiaomi, आदि। अधिकांश स्टॉक कीबोर्ड अच्छे हैं, लेकिन कुछ उपयोगकर्ता आवश्यकताओं के लिए, एक उपयोगकर्ता