2015-12-10 4 views
0

support.design.widget.NavigationView в моем приложении. Я могу добавить элементы меню (изображение + текст) динамически в навигационное представление. Кадры добавляются из drawable с помощью SetIcon API. Но теперь моя проблема заключается в том, чтобы добавить изображения, динамически извлекаемые с сервера. Я просмотрел Google, но не нашел решения о том, как это сделать. SetIcon будет принимать только drawable или resource id в качестве аргументов. Пожалуйста, дайте мне знать, как этого достичь.Динамический значок для пунктов меню в навигации Просмотр в android

+0

В каком формате вы получаете свои изображения? – vguzzi

+0

Спасибо за ответ vguzzi. Я получаю изображения в формате jpg. Должен ли я преобразовать это в растровое изображение, а затем в рисование с помощью bitmapdrawable и назначить его в меню. – krishnamn

+0

Без проблем! Вы не можете хранить JPEG в своем приложении, превращаете ли вы его в растровое изображение? – vguzzi

ответ

2

Чтобы добавить изображение, полученное из вызова API в ваш NavigationView, вам придется преобразовать это изображение в Drawable (вы как-то ответили на свой вопрос!) :).

Для этого сначала придется конвертировать ваши ByteArray в Bitmap так:

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata .length); 

И тогда вы можете преобразовать это Bitmap в Drawable как так:

Drawable d = new BitmapDrawable(getResources(), bitmap); 

После вас у вас есть Drawable вы можете обновить свой Menu следующим образом:

menu.getItem(0).setIcon(yourNewDrawable); 

Если вы предпочитаете, сохраните ссылку на переменную MenuItem, когда Menu инициализирует и изменяет ее, когда вы сочтете нужным (например, когда ваш вызов API завершен!).

Надеюсь, что это поможет.

Смежные вопросы