Ответ 1
Следуйте этой ссылке, которая объясняет, как программно изменить текст меню.
http://developer.android.com/guide/topics/ui/actionbar.html#Style
Проверьте наличие android: actionMenuTextColor для определения ресурса стиля для текста.
У меня есть actionBar с несколькими элементами, я хотел бы изменить цвет текста при щелчке элемента. Есть ли способ сделать это программно? Просьба представить и пример или любые ресурсы.
Спасибо
public void catalogClick(MenuItem item){
//highlight menuitem etc.
}
Следуйте этой ссылке, которая объясняет, как программно изменить текст меню.
http://developer.android.com/guide/topics/ui/actionbar.html#Style
Проверьте наличие android: actionMenuTextColor для определения ресурса стиля для текста.
Чтобы изменить без определения ресурса стиля, мы можем использовать SpannableString.
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
//To style first menu item
MenuItem menuItem = menu.getItem(0);
CharSequence menuTitle = menuItem.getTitle();
SpannableString styledMenuTitle = new SpannableString(menuTitle);
styledMenuTitle.setSpan(new ForegroundColorSpan(Color.parseColor("#00FFBB")), 0, menuTitle.length(), 0);
menuItem.setTitle(styledMenuTitle);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
Toast.makeText(this, item.getTitle() + " clicked!", Toast.LENGTH_LONG).show();
return true;
}
При форматировании текстового стиля вы получите исключение типа "Недопустимый тип полезной нагрузки". Чтобы этого избежать, переопределите onMenuItemSelected и используйте return true или false.
Ссылка:
Android: java.lang.IllegalArgumentException: недопустимый тип элемента полезной нагрузки
http://vardhan-justlikethat.blogspot.in/2013/02/solution-invalid-payload-item-type.html
Попробуйте Firewall_Sudhan ответить, но итерации подменю меню
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
SubMenu subMenu = menu.getItem(0).getSubMenu();
for (int i = 0; i < subMenu.size(); i++) {
MenuItem menuItem = subMenu.getItem(i);
CharSequence menuTitle = menuItem.getTitle();
SpannableString styledMenuTitle = new SpannableString(menuTitle);
styledMenuTitle.setSpan(new ForegroundColorSpan(Color.BLACK), 0, menuTitle.length(), 0);
menuItem.setTitle(styledMenuTitle);
}
}