Как добавить элементы в ToolBar если он не прописан в activity_main.xml?

В Android Studio создаем Empty Activity. Как добавить допустим кнопку на этот стандартный тулбар?


Ответы (1 шт):

Автор решения: Andrew

Если нет в разметке, но по теме есть, нужно брать системный бар:

getSupportActionBar()

Дальше после этого нужно в папке res/menu (если нет создайте) добавить менюшку, например main_menu.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"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context=".MainActivity">
        <item
            android:id="@+id/action_settings"
            android:orderInCategory="100"
            android:title="@string/action_settings"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_search"
            android:orderInCategory="200"
            android:title="Search"
            android:icon="@drawable/ic_search"
            app:showAsAction="ifRoom"/>                
        <item
            android:id="@+id/action_user"
            android:orderInCategory="300"
            android:title="User"
            android:icon="@drawable/ic_user"
            app:showAsAction="ifRoom" />        
    </menu>

дальше идем в активность и прикрепляем к вашему тулбару созданное меню и нажимаем ctrl+o и ищем методы которые ниже:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();

if (id == R.id.action_settings) {
   return true;
}

return super.onOptionsItemSelected(item);
}

и делаем выбор элементов которые вы сделали в ресурсах. Вот есть туториал по данному вопросу.

UPDATE

После создания empty activity вам нужно будет проверить нету ли в теме тулбара, потому что тогда после перетаскивания их будет два. Если я правильно понял, то под перетаскиванием вы подразумеваете использование Palette и виджетов в ней. После того как вы перетащили тулбар в редакторе дизайна, у вас будет что-то типа такого:

<androidx.appcompat.widget.Toolbar
      android:id="@+id/toolbar"
      android:minHeight="?attr/actionBarSize"  
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:titleTextColor="@android:color/white"
      android:background="?attr/colorPrimary">
    </androidx.appcompat.widget.Toolbar>

дальше вы можете работать с ним из под активности:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

ну и разумеется использовать приведенные выше методы для работы с менюшкой из ресурсов.

→ Ссылка