यह उदाहरण दर्शाता है कि 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 आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और ऐप चलने पर डिफ़ॉल्ट स्क्रीन देखें।