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 नामक ड्रॉएबल संसाधन मौजूद हैं।