Иконки в контекстном меню не отображаются? - PullRequest
0 голосов
/ 06 октября 2018

Когда я долго щелкаю по пункту реселлера, появляется контекстное меню, но только текст, а не связанные значки, вот код:

    <?xml version="1.0" encoding="utf-8"?>
    <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">

    <item
        android:id="@+id/bookmark"
        android:orderInCategory="1"
        android:title="@string/bookmarked_ayah"
        android:icon="@drawable/ic_bookmark" />
    <item
        android:id="@+id/fbshare"
        android:orderInCategory="2"
        android:title="@string/fb_share"
        android:icon="@drawable/ic_facebookshare" />
    <item
        android:id="@+id/saveayah"
        android:orderInCategory="3"
        android:title="@string/save_ayah"
        android:icon="@drawable/ic_save" />
    </menu>

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.ayah_saving_actionbar_items,menu);

        return true;
    }

1 Ответ

0 голосов
/ 06 октября 2018

Если вы работаете с кодом на Android 3.0+, значки в меню не отображаются по дизайну.Это дизайнерское решение Google.

Но если вы действительно хотите показывать значки, вы можете использовать код:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    try {
        Field field = menu.getClass().getDeclaredField("mOptionalIconsVisible");
        field.setAccessible(true);
        field.setBoolean(menu, true);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return super.onPrepareOptionsMenu(menu);
}

Он использует отражение и устанавливает видимые значки.Я проверил и вот результат:

enter image description here

...