2016-09-29 5 views
-1

Можно ли изменить цвет меню (я имею в виду фон, цвета текста и значки) динамически из кода в Android? Если да, то как это сделать?Могу ли я изменить цвет меню Android динамически?

Я знаю, что это можно сделать, если сначала объявить стили цвета, а затем загрузить. Но я хочу получить данные о цвете с сервера, а затем динамически установить его из кода, не объявив ранее в Theme.

+0

вы можете сделать это с помощью 'Html.fromHtml()' метод ..... – sushildlh

ответ

0

Для этого вам необходимо создать customMenu xml. Определите все цветовые коды в приложении с помощью отдельных клавиш. С сервера вы можете передать ключи, и соответствующий цвет будет выбран.

Кроме того, вы даже можете передавать цветовые коды Hex со стороны сервера.

0

Сохраните свой цвет в sharedpreferance. Затем всегда getColor из общего предпочтения и установите его в меню. Всякий раз, когда вы хотите обновить цвет, отправьте сообщение gcm с сервера на мобильный с новым цветовым кодом. При получении кода обновите цветовой код в общем режиме. Цвет меню будет автоматически изменен.

1

Попробуйте для изменения цвета фона/текста: How to change Menu Item Color & Size programmatically?

Для изменения текста/значка вы можете просто переопределить метод onCreateOptionsMenu() и сохраните объект меню.

@Override 
public void onCreateOptionsMenu(
     Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.your_menu_xml, menu); 
    yourMenu = menu; 
} 

Затем после выполнения запроса к вашему API найти пункты меню и изменить значок/текст по:

MenuItem menuItem = yourMenu.findItem(R.id.menu_item); 
menuItem.setIcon(R.drawable.your_drawable); 
menuItem.setTitle("title");