বিকল্প মেনু আইটেমগুলি প্রোগ্রামিকভাবে পরিবর্তন করা সম্ভব? দয়া করে কেউ আমাকে একটি উদাহরণ সরবরাহ করতে পারেন?
এছাড়াও, আমি নির্দিষ্ট কিছু আইটেম অক্ষম করতে চাই, যাতে তারা ক্লিকগুলি না শোনায়, এটি কি সম্ভব?
উত্তর:
কারও জন্য মেনুটির বিকল্পগুলি পরিবর্তনশীলভাবে পরিবর্তন করা দরকার:
private Menu menu;
// ...
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu = menu;
getMenuInflater().inflate(R.menu.options, menu);
return true;
}
// ...
private void hideOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(false);
}
private void showOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(true);
}
private void setOptionTitle(int id, String title)
{
MenuItem item = menu.findItem(id);
item.setTitle(title);
}
private void setOptionIcon(int id, int iconRes)
{
MenuItem item = menu.findItem(id);
item.setIcon(iconRes);
}
item.setVisible(false);
আইটেমটি কেবল তখনই গোপন হয়ে যায় যখন আমি নিজে মেনুতে ক্লিক করি। আমি যদি invalidateOptionsMenu();
আইটেমটি ব্যবহার করি তবে ক্লিক করতে সাড়া দেয় না। আমি যদি প্রশংসা করি যে আপনি যদি একইরকম একটি সমস্যার মুখোমুখি হয়ে আমাকে সহায়তা করতে পারেন তবে। stackoverflow.com/questions/54756799/...
setVisible
বলা হয়েছে যে setEnabled(false)
আপনারও কল করা উচিত অন্যথায় আইটেমটি এখনও এটির শর্টকাটের মাধ্যমে আহ্বান করা যেতে পারে
মেনু.এক্সএমএল
<item
android:id="@+id/item1"
android:title="your Item">
</item>
আপনার জাভা ফাইল রাখুন
public void onPrepareOptionsMenu(Menu menu) {
menu.removeItem(R.id.item1);
}
যেমন নিকোলে বলেছিলেন যে এটি প্রিপার্পেপশনমেনু () তে করুন।
অ্যাকশন বারে মেনু আইটেমগুলির জন্য আপনাকে মেনুটি অবৈধ করতে হবে
activity.invalidateOptionsMenu();
এটি এখানে আরও বিশদে বর্ণিত হয়েছে যখন প্রিপার্পেপশনস মেনু মেনু এন্ট্রিগুলি স্যুইচ করে আমি কীভাবে অ্যাকশনবারকে রিফ্রেশ করতে পারি?
আমাকে যদি আমার অপশন মেনুটির বিষয়বস্তু পরিবর্তন করতে হয় তবে আমি এটি onMenuOeded () চলাকালীন সম্পাদন করব। এটি ব্যবহারকারীকে মেনুটিতে অ্যাক্সেস করছে এমন মুহুর্তে চলমান অবস্থা যাচাই করতে সহায়তা করে।
public boolean onMenuOpened(int featureid, Menu menu)
{
menu.clear();
if (!editable)
{
MenuItem itemAdd = menu.add(0, REASSIGN, Menu.NONE, context.getString(R.string.reassign));
MenuItem itemMod = menu.add(1, EDIT, Menu.NONE, context.getString(R.string.modify));
MenuItem itemDel = menu.add(2, DELETE, Menu.NONE, context.getString(R.string.delete));
itemAdd.setShortcut('0', 'a');
itemMod.setShortcut('1', 'm');
itemDel.setShortcut('2', 'd');
}
else
{
MenuItem itemSave = menu.add(3, SAVE, Menu.NONE, context.getString(R.string.savechanges));
itemSave.setShortcut('0', 'S');
}
return true;
}
নির্দিষ্ট আইটেম অক্ষম করতে:
MenuItem item = menu.findItem(R.id.ID_ASSING_TO_THE_ITEM_IN_MENU_XML);
item.setEnabled(false);
item.setVisible(false);
, আমার আইটেমটি কেবল তখনই গোপন হয়ে যায় যখন আমি নিজে মেনুতে ক্লিক করি (তিনটি বিন্দু)। আমি যদি invalidateOptionsMenu();
কিছু আইটেম ব্যবহার করি তবে ক্লিক করতে সাড়া দেয় না। আমি যদি প্রশংসা করি যে আপনি যদি একইরকম একটি সমস্যার মুখোমুখি হয়ে আমাকে সহায়তা করতে পারেন তবে। stackoverflow.com/questions/54756799/...
মেনুতে মানগুলি যুক্ত করতে আমি নীচের লাইনগুলি ব্যবহার করেছি
getActivity().invalidateOptionsMenu();
এই কাজটি আমার কাছে কবজির মতো চেষ্টা করুন।
এই কোড ব্যবহার করে দেখুন:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
this.menu=menu;
updateMenuItems(menu);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.document_list_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
if (item.getItemId() == android.R.id.home) {
onHomeButtonPresssed();
}else if (item.getItemId() == R.id.action_delete) {
useCheckBoxAdapter=false;
deleteDocuments();
} else if (item.getItemId() == R.id.share) {
useCheckBoxAdapter=false;
shareDocuments();
} else if (item.getItemId() == R.id.action_tick) {
useCheckBoxAdapter=true;
onShowCheckboxes();
}
updateMenuItems(menu);
return true;
}
private void updateMenuItems(Menu menu){
if (useCheckBoxAdapter && menu != null) {
menu.findItem(R.id.action_delete).setVisible(true);
menu.findItem(R.id.share).setVisible(true);
menu.findItem(R.id.action_tick).setVisible(false);
} else {
menu.findItem(R.id.action_delete).setVisible(false);
menu.findItem(R.id.share).setVisible(false);
menu.findItem(R.id.action_tick).setVisible(true);
}
invalidateOptionsMenu();
}
invalidateOptionsMenu();
, আমার সর্বদা দৃশ্যমান আইটেমগুলি কাজ করা বন্ধ করে দেয় (আমি বলতে চাইছি আইটেমগুলি ক্লিক করতে সাড়া দেয় না)। আমি যদি প্রশংসা করি যে আপনি যদি একইরকম একটি সমস্যার মুখোমুখি হয়ে আমাকে সহায়তা করতে পারেন তবে। stackoverflow.com/questions/54756799/...
আমার মতো সহজ কিছু আপনি করতে পারেন do যখন মেনু আইটেমটি স্পর্শ করা হয় তখন প্রয়োজনীয় পাঠ্যে কেবল পরিবর্তন করুন। আমার শব্দটি বন্ধ এবং চালু করার দরকার ছিল, এটির সাথে স্পর্শ করে কোনও ক্রিয়া সম্পাদন করার ক্ষমতাও। আমার কোডটি এখানে:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.audioOn:
audioOn = !audioOn;
if (audioOn)
item.setTitle("Audio Off");
else
item.setTitle("Audio On");
return true;
case R.id.touchOn:
touchOn = !touchOn;
if (touchOn)
item.setTitle("Touch Off");
else
item.setTitle("Touch On");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
অডিওঅন এবং টাচঅন হ'ল কোডের অন্যান্য অংশে বুলিয়ান checked আশাকরি এটা সাহায্য করবে.
আপনি নীচের মত বাস্তবায়ন করে আপনার কাজটি সম্পাদন করতে পারেন:
private Menu menu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.drive_menu, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
this.menu = menu;
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_toggle_grid) {
handleMenuOption(id);
return true;
} else if(id == R.id.action_toggle_list){
handleMenuOption(id);
return true;
}
return super.onOptionsItemSelected(item);
}
private void handleMenuOption(int id) {
MenuItem item = menu.findItem(id);
if (id == R.id.action_toggle_grid){
item.setVisible(false);
menu.findItem(R.id.action_toggle_list).setVisible(true);
}else if (id == R.id.action_toggle_list){
item.setVisible(false);
menu.findItem(R.id.action_toggle_grid).setVisible(true);
}
}
যদি আপনার নীচে একটি বার থাকে:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mBottomBar.getCurrentTabId() == R.id.tab_more) {
getMenuInflater().inflate(R.menu.more_menu, menu);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.preferences:
startActivity(new Intent(this, PreferenceActivity.class));
break;
}
return super.onOptionsItemSelected(item);
}
তারপরে আপনাকে কেবল কল করতে হবে:
@Override
public void onBottomBarClick(int tabId) {
supportInvalidateOptionsMenu();
}
সরঞ্জামদণ্ডের বিকল্পসমূহ মেনু আইটেমগুলি প্রোগ্রামিকভাবে অ্যাক্সেসের জন্য কোটলিন কোড এবং পাঠ্য / আইকনটি পরিবর্তন করুন, ..:
1-আমাদের মেনু আইটেমগুলিতে মেনু আইটেম ফাইল রয়েছে: মেনু.এক্সএমএল, এর জন্য নমুনা কোড:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/balance"
android:title="0"
android:orderInCategory="100"
app:showAsAction="always" />
</menu>
2- শ্রেণিতে মেনু অবজেক্ট অ্যাক্সেসের জন্য একটি ভেরিয়েবল সংজ্ঞা দিন:
var menu: Menu? = null
3- এটি তৈরি করুনঅ্যাপশনমেনুতে শুরু করুন:
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.main, menu)
this.menu = menu
return true
}
4- আপনার কোড বা মজার ভিতরে মেনু আইটেম অ্যাক্সেস করুন:
private fun initialBalanceMenuItemOnToolbar() {
var menuItemBalance = menu?.findItem(R.id.balance)
menuItemBalance?.title = Balance?.toString() ?: 0.toString()
// for change icon : menuWalletBalance?.icon
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.calendar, menu);
if(show_list == true) {
if(!locale.equalsIgnoreCase("sk")) menu.findItem(R.id.action_cyclesn).setVisible(false);
return true;
}
menu
এটি থেকেMenuItem
বেরিয়ে আসার চেষ্টা করার আগে সেট করা হয়েছে । উদাহরণস্বরূপ, যদি আপনি ভালো কিছু আছে যদিactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)
, ট্যাব মেনু সামনে লোড করা হয়, তাই কলিংhideOption
/showOption
মধ্যেonTabSelected
একটি নাল পয়েন্টার ব্যতিক্রম মধ্যে ফলাফল নেই।