Как добавить изображение с текстом в меню в Android?

Я пытаюсь реализовать настраиваемый параметр меню с обоими, текстом и изображением, который выглядит так, как это изображение вводит описание изображения здесь

К сожалению, я не знаю, как это реализовать.

Мое menu.xml выглядит так:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.admin.ddcart.LIST"> <item android:id="@+id/action_settings1" android:title="@string/action_settings1" android:orderInCategory="100" app:showAsAction="never" /> <item android:id="@+id/action_settings2" android:title="@string/action_settings2" android:orderInCategory="100" app:showAsAction="never" /> <item android:id="@+id/action_settings3" android:title="@string/action_settings3" android:orderInCategory="100" app:showAsAction="never" /> </menu> 

Если ваше изображение находится в mipmap используйте

 android:icon=@mipmap/your_image" 

Если ваше изображение находится в drawable каталоге, используйте

 android:icon=@drawable/your_image" 

Для значков предпочтительнее добавить четыре выталкиваемых в

  • Размер изображения drawable-hdpi 36 * 36
  • Размер изображения с возможностью рисования-mdpi 24 * 24
  • Размер изображения drawable-xhdpi 48 * 48
  • Размер изображения с возможностью рисования-xxhdpi 72 * 72
  • Размер изображения drawable-xxxdpi 96 * 96

Вы также можете использовать вектор

Создать тонкий имя delete.xml в drawable dir

  <?xml version="1.0" encoding="UTF-8" standalone="no"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="24.0" android:viewportWidth="24.0" android:width="24dp"> <path android:fillColor="#FFFFFF" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/> </vector> 

И в теге item используйте android:icon=@drawable/your_image"

Полный код

 <item android:id="@+id/action_settings2" android:title="@string/action_settings2" android:icon=@drawable/your_image"/> 

Для генерации png и vector используйте этот плагин

Легко настраивайте цвет, размер и т. Д. Создайте png или вектор

=> Генерировать png всех размеров одним нажатием

Введите описание изображения здесь

Добавить android:icon=@drawable/your_image" в атрибуте тега элемента

  <item android:id="@+id/action_settings2" android:title="@string/action_settings2" android:icon=@drawable/your_image"/> 

И вам нужно использовать прядильщик, ссылаясь на эти ссылки http://www.androidhive.info/2013/11/android-working-with-action-bar/

https://developer.android.com/guide/topics/ui/controls/spinner.html

Таким образом вы можете установить значок в меню

http://keepsafe.github.io/2014/11/19/building-a-custom-overflow-menu.html

 public void onClick(View v) { PopupMenu popupMenu = new PopupMenu(mContext, v); popupMenu.inflate(R.menu.album_overflow_menu); // Force icons to show Object menuHelper; Class[] argTypes; try { Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); fMenuHelper.setAccessible(true); menuHelper = fMenuHelper.get(popupMenu); argTypes = new Class[] { boolean.class }; menuHelper.getClass().getDeclaredMethod("setForceShowIcon", argTypes).invoke(menuHelper, true); } catch (Exception e) { // Possible exceptions are NoSuchMethodError and NoSuchFieldError // // In either case, an exception indicates something is wrong with the reflection code, or the // structure of the PopupMenu class or its dependencies has changed. // // These exceptions should never happen since we're shipping the AppCompat library in our own apk, // but in the case that they do, we simply can't force icons to display, so log the error and // show the menu normally. Log.w(TAG, "error forcing menu icons to show", e); popupMenu.show(); return; } popupMenu.show(); } 

Вывод Введите описание изображения здесь

Просто добавьте изображения в виде icon в пункты меню.

  <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/menu_top" android:checkableBehavior="single" > <item android:checked="true" android:id="@+id/drawer_gmail" android:icon="@drawable/gmail" android:title="Gmail"/> <item android:id="@+id/bluetooth" android:icon="@drawable/bluetooth" android:title="Bluetooth" > </item> ... </group> </menu> 

Вы можете просто установить список в «меню», а затем с помощью java-кода создать специальный адаптер для раздувания «компоновки текста и изображения вместе». Создайте макет, который содержит изображение и текстовое изображение, используйте специальный адаптер для раздувания и передачи результата в список, чтобы у вас было меню, как вы пожелаете.

Если у вас возникла ошибка при выполнении этих комментариев ниже.