Как динамически загрузить массив иконок на панели инструментов в Android? - PullRequest
0 голосов
/ 14 февраля 2019

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

Код MainActivity.java:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) 
findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = 
(NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

Существует возможность динамической загрузки массива на панели инструментов

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вы можете установить значок элементов вашего меню, вызвав метод setIcon (int) нужного элемента.В этом примере есть только один элемент, который меняет свой значок, нравится ли пользователю фильм или нет.«Мне нравится» - это логическое значение, которое изменяется в другой части кода, а затем вызывается invalidateOptionsMenu () для воссоздания меню (вызывается onCreateOptionsMenu после аннулирования).

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.your_xml_menu, menu);
    MenuItem item = menu.getItem(0);
    if (liked) {
        item.setIcon(R.drawable.liked);
    } else {
        item.setIcon(R.drawable.not_liked);
    }
    return super.onCreateOptionsMenu(menu);
}

Вы также можете изменить видимостьэлемент, вызывающий item.setVisible (false);или даже раздувать разные xml для разных конфигураций.

0 голосов
/ 14 февраля 2019

enter image description here

Попробуйте этот, вам поможет:

Вы просто создаете элемент меню в своей деятельности, затем вы можете реализовать несколько значков.

  1. Создайте папку меню в существующей папке Res Res.

  2. Создайте файл main.xml в папке меню.

    main.xml

    <?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">
    <item
        android:id="@+id/action_item_one"
        android:title="Camera"
        android:icon="@drawable/ic_menu_camera"
        app:showAsAction="always" />
    
    <item
        android:id="@+id/action_item_two"
        android:title="Send"
        android:icon="@drawable/ic_menu_send"
        app:showAsAction="always" />
    </menu>
    
  3. В своей деятельностипереопределите onCreateOptionsMenu () и onOptionsItemSelected () для работы с меню параметров.

    ActionBarActivity.java

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
    
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_camera) {
    
            // Do something
            return true;
        }
        if (id == R.id.action_send) {
    
            // Do something
            return true;
        }
    
        return super.onOptionsItemSelected(item);
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...