Иконки MenuItems заполнены серым цветом, поэтому изображение не отображается - PullRequest
0 голосов
/ 07 мая 2019

Я пишу приложение для администрирования автомобиля и столкнулся с некоторыми проблемами при создании динамического контента.Я сделал NavigationView с меню для отображения параметров на боковой панели.Элементы меню должны иметь маленькие значки слева.Изображения создаются в другом контексте и отправляются в базу данных mysql с кодировкой Base64, которая затем декодируется при обновлении пунктов меню.

String carName = obj.getString("carName");
                        String sign = obj.getString("sign");
                        String bitmap = obj.getString("bitmap");
                        MenuItem item = menu.add(0, i, 0, carName);
                        byte[] decodeString = Base64.decode(bitmap, Base64.DEFAULT);
                        Bitmap decodeImage = BitmapFactory.decodeByteArray(decodeString, 0, decodeString.length);
                        BitmapDrawable d = new BitmapDrawable(getResources(), decodeImage);
                        item.setIcon(d);

На данный момент я создал новый Drawable с String в кодировке Base64.,Затем я просто хочу установить значок элемента MenuItem на созданный Drawable.Это создает только серое поле слева от MenuItem, а не конкретное изображение, которое я хотел бы иметь там.

Я использую compileSdkVersion 28, minSdkVersion 23, кодирование с помощью Android Studio.Я запустил отладчик и проверил растровые изображения.Android Studio может отображать эти штрафа.

1 Ответ

0 голосов
/ 09 мая 2019

Хорошо, наконец-то все заработало.

view.setItemIconTintList(null)

сделал трюк здесь.

весь пример:

try {
                    JSONArray arr = new JSONArray(response);
                    NavigationView view = findViewById(R.id.nav_view);
                    view.setItemIconTintList(null);
                    Menu menu = view.getMenu();
                    menu.clear();
                    for (int i = 0; i < arr.length(); i++) {
                        JSONObject obj = arr.getJSONObject(i);
                        String carName = obj.getString("carName");
                        String sign = obj.getString("sign");
                        String bitmap = obj.getString("bitmap");
                        MenuItem item = menu.add(0, i, 0, carName);
                        byte[] decodeString = Base64.decode(bitmap, Base64.DEFAULT);
                        Bitmap decodeImage = BitmapFactory.decodeByteArray(decodeString, 0, decodeString.length);
                        BitmapDrawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(decodeImage, 50, 50, true));
                        item.setIcon(d.getCurrent());
                        item.setIcon(item.getIcon());
                        MainActivity.super.onCreateOptionsMenu(menu);

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
...