থিম এবং স্টাইল ব্যবহার করে অপশন মেনু টেক্সট রঙ কাস্টমাইজ করা
অ্যান্ড্রয়েড অপশন মেনুর টেক্সট রঙ পরিবর্তন করার সবচেয়ে সহজ পদ্ধতি হলো অ্যাপ থিমে `android:textColor` আট্রিবিউট সেট করা। এটি মেনু আইটেমের পাশাপাশি অন্যান্য টেক্সট কম্পোনেন্টেও প্রয়োগ হবে।
ধাপ ১: প্রজেক্ট তৈরি করুন
স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট।
ধাপ ২: মিনিমাল লেআউট
res/layout/activity_main.xml - শুধু কন্টেইনার:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:padding="16sp"
tools:context=".MainActivity">
</RelativeLayout>
ধাপ ৩: ভেক্টর অ্যাসেট তৈরি করুন (ঐচ্ছিক)
Res/drawable-এ রাইট-ক্লিক → New → Vector Asset → একটি আইকন বেছে নিন (যেমন `ic_icon`)。
ধাপ ৪: মেনু রিসোর্স ফাইল
res/menu/sample_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/item1" android:icon="@drawable/ic_icon" android:title="Item 1" app:showAsAction="ifRoom" />
<item android:id="@+id/item2" android:title="Item 2" app:showAsAction="never" />
<item android:id="@+id/item3" android:title="Item 3" app:showAsAction="never" />
<item android:id="@+id/item4" android:title="Item 4" app:showAsAction="never" />
<item android:id="@+id/item5" android:title="Item 5" app:showAsAction="never" />
</menu>
ধাপ ৫: থিমে টেক্সট রঙ সেট করুন
res/values/styles.xml - এপ্লিকেশন থিমে যোগ করুন:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- মেনু টেক্সট রঙ পরিবর্তন -->
<item name="android:textColor">#FF000F</item>
</style>
</resources>
ধাপ ৬: মেনু হ্যান্ডলিং
src/MainActivity.java:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@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.sample_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1: showToast("Item 1 selected"); return true;
case R.id.item2: showToast("Item 2 selected"); return true;
case R.id.item3: showToast("Item 3 selected"); return true;
case R.id.item4: showToast("Item 4 selected"); return true;
case R.id.item5: showToast("Item 5 selected"); return true;
default: return super.onOptionsItemSelected(item);
}
}
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
বিকল্প পদ্ধতি: SpannableString (প্রোগ্রাম্যাটিক্যালি)
যদি শুধু নির্দিষ্ট মেনু আইটেমের রঙ বদলাতে চান:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.sample_menu, menu);
MenuItem item = menu.findItem(R.id.item1);
SpannableString spannableString = new SpannableString(item.getTitle());
spannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, spannableString.length(), 0);
item.setTitle(spannableString);
return true;
}
Toolbar ব্যবহার করলে (AppCompat)
যদি Toolbar ব্যবহার করেন, `app:titleTextColor` বা `app:actionMenuTextColor` ব্যবহার করুন:
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:titleTextColor="@android:color/white"
app:actionMenuTextColor="@android:color/white" />