Как добавить еще один значок на панель инструментов с помощью NavigationView - PullRequest
1 голос
/ 26 мая 2020

Я создал приложение Android, используя NavigationDrawer. При создании приложения по умолчанию устанавливается одно графическое меню, расположенное слева от панели инструментов. И моя цель - добавить еще один значок, расположенный, например, справа от панели инструментов. Я перепробовал много руководств, следуя им шаг за шагом, но я не могу этого добиться. Может ли кто-нибудь мне помочь?

Here is my wish

Ответы [ 4 ]

1 голос
/ 26 мая 2020

Если вы используете панель инструментов, установленную как панель действий (setSupportActionBar (Toolbar)) или только панель действий:

в вашей деятельности:

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    getMenuInflater().inflate(R.layout.menu_home, menu)
    return true
}

в res -> menu папка добавить новый файл с именем menu_home (если папка меню не существует, создайте ее):

Добавьте необходимое количество элементов в menu_home файл:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_01"
        android:title="@string/my_title"
        android:icon="@drawable/my_icon"
        app:showAsAction="ifRoom"/>
    ...
</menu>

showAsAction="ifRoom" делает значок доступным на Панели инструментов, если для него есть место. у вас также есть опция для never, поскольку он находится во всплывающем меню.


Если вы используете только панель инструментов (без настройки в качестве панели действий):

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    app:menu="@menu/menu_home"
    android:layout_height="?android:attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay" />
0 голосов
/ 26 мая 2020

В вашем меню. xml добавить:

<item
    android:title="icon"
    app:showAsAction="always"
    android:id="@+id/menuitem_icon"
    android:icon="@drawable/micon"

    >
</item>

Затем в OnCreateView: setHasOptionsMenu (true); Закрыв OncreateView ниже, напишите этот метод:

@Override

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.icon, menu);
    ...
}
0 голосов
/ 26 мая 2020

Вам необходимо создать меню для выполнения этой задачи. Например;

res/menu/menu_main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/new_item"
        android:icon="@drawable/new_icon"
        app:showAsAction="ifRoom">
    </item>
</menu>

Если у вас уже есть меню, вы можете продолжить с ним.

После того, как вы создали меню, вам нужно чтобы надуть его.

public class MainActivity extends AppCompatActivity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

Подробнее об использовании ресурса меню см. здесь: https://developer.android.com/guide/topics/resources/menu-resource

0 голосов
/ 26 мая 2020

в действии

override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater: MenuInflater = menuInflater
inflater.inflate(R.menu.game_menu, menu)
return true

}

для обработки щелчков по пунктам меню

override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle item selection
return when (item.itemId) {
    R.id.new_game -> {
        newGame()
        true
    }
    R.id.help -> {
        showHelp()
        true
    }
    else -> super.onOptionsItemSelected(item)
}

}


в папке меню game_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
      android:icon="@drawable/ic_new_game"
      android:title="@string/new_game"
      android:showAsAction="always"/> // this icon will be always shown
<item android:id="@+id/help"
      android:icon="@drawable/ic_help"// add you icon image
      android:title="@string/help"
      android:showAsAction="ifRoom"/> // this icon will be shown if there is space available 
</menu>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...