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

Kotlin का उपयोग करके Android Overflow Menu आइकन को प्रोग्रामेटिकली कैसे बदलें?

यह उदाहरण दर्शाता है कि Kotlin का उपयोग करके Android Toolbar के Overflow Menu (थ्री-डॉट मेनू) के आइकन और विजिबिलिटी को प्रोग्रामेटिकली कैसे बदला जाता है। onPrepareOptionsMenu() का उपयोग करके रनटाइम पर मेनू आइटम्स को संशोधित किया जाता है।

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

Android Studio खोलें, File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2: activity_main.xml में Toolbar जोड़ें

<?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"
    android:padding="4dp"
    tools:context=".MainActivity">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/tootBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

</LinearLayout>

चरण 3: मेनू रिसोर्स बनाएं (res/menu/menu.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_baseline_bluetooth_24"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/option2"
        android:orderInCategory="2"
        android:title="Call"
        android:icon="@drawable/ic_baseline_call_24"
        app:showAsAction="ifRoom|collapseActionView" />

    <item
        android:id="@+id/option4"
        android:title="Chat"
        android:visible="false"
        android:orderInCategory="3"
        android:icon="@drawable/ic_baseline_chat_24"
        app:showAsAction="ifRoom|collapseActionView" />

    <item
        android:id="@+id/option3"
        android:title="About"
        app:showAsAction="never" />

</menu>

चरण 4: MainActivity.kt में मेनू हैंडलिंग

import android.graphics.Color
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.widget.Toolbar
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    lateinit var toolBar: Toolbar

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        toolBar = findViewById(R.id.tootBar)
        toolBar.title = "MyToolBar"
        toolBar.setTitleTextColor(Color.WHITE)
        setSupportActionBar(toolBar)
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.option1 -> {
                Toast.makeText(applicationContext, "Bluetooth Option Selected", Toast.LENGTH_SHORT).show()
                true
            }
            R.id.option2 -> {
                Toast.makeText(applicationContext, "Call Option Selected", Toast.LENGTH_SHORT).show()
                true
            }
            R.id.option3 -> {
                Toast.makeText(applicationContext, "About Option Selected", Toast.LENGTH_SHORT).show()
                true
            }
            R.id.option4 -> {
                Toast.makeText(applicationContext, "Chat Option Selected", Toast.LENGTH_SHORT).show()
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }

    override fun onPrepareOptionsMenu(menu: Menu): Boolean {
        // रनटाइम पर मेनू आइटम्स संशोधित करें
        menu.findItem(R.id.option2).isVisible = false
        menu.findItem(R.id.option4).isVisible = true
        // आइकन बदलना:
        // menu.findItem(R.id.option1).setIcon(R.drawable.new_icon)
        return super.onPrepareOptionsMenu(menu)
    }
}

चरण 5: टूलबार Overflow आइकन बदलना (कस्टम ड्रॉएबल)

// styles.xml में
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <item name="actionOverflowButtonStyle">@style/OverflowButtonStyle</item>
</style>

<style name="OverflowButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
    <item name="android:src">@drawable/custom_overflow_icon</item>
</style>

या प्रोग्रामेटिकली:

toolBar.setOverflowIcon(ContextCompat.getDrawable(this, R.drawable.custom_overflow_icon))

चरण 6: AndroidManifest.xml कॉन्फ़िगर करें

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">

    <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>

ऐप चलाएं

अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में किसी एक्टिविटी फ़ाइल को खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और ऐप चलने पर डिफ़ॉल्ट स्क्रीन देखें।

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

    यह उदाहरण दर्शाता है कि Android ऐप की भाषा को रनटाइम में प्रोग्रामेटिकली कैसे बदला जाए Configuration और Locale का उपयोग करके। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML res/layout/activity_main.xml - स्ट्रिंग रिसोर्स से टेक्स्ट: <?xml version=1.0 encodin

  1. Android में मेनू आइटम का टेक्स्ट कलर कैसे बदलें? Android में मेनू आइटम का टेक्स्ट कलर कैसे बदलें?

    Android ऐप थीम के जरिए मेनू आइटम्स का टेक्स्ट कलर कस्टमाइज़ करना styles.xml में थीम अट्रिब्यूट बदलकर सभी मेनू आइटम्स का टेक्स्ट कलर एक साथ सेट करने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: बेसिक लेआउट res/layout/activity_main.xml (खाली RelativeLayout): <

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

    Android में Toolbar और मेनू आइटम कस्टमाइज़ करने का गाइड यह ट्यूटोरियल दिखाता है कि कैसे Toolbar सेट करके, मेनू रिसोर्स से आइटम इन्फ्लेट करके और onPrepareOptionsMenu में मेनू आइटम की दृश्यता/आइकन डायनामिकली बदले जाएं। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनकर नया प्रोजेक