Как создать панель инструментов с пользовательской кнопкой слева?

Я новичок в разработке Android, и у меня возникли большие проблемы с созданием настраиваемой панели инструментов. Мои требования:

  1. Пользовательская кнопка слева (значок + текст)
  2. Разделитель после пользовательской кнопки
  3. Высота кнопок должна быть такой же, как панель инструментов (без полей)

Вот пример изображения, в котором объясняются мои требования: Введите описание изображения здесь

Я пытался использовать actionBar.setCustomView(v); Но это не решило моих проблем:

  1. Правые кнопки имеют верхнее / нижнее поле – они меньше, чем панель инструментов
  2. Я не смог добавить разделитель.
  3. Левая кнопка (из пользовательского вида) была меньше высоты панели.

Мои вопросы:

  1. Мне действительно нужен пользовательский вид, чтобы добавить пользовательскую кнопку слева?
  2. Как добавить разделитель слева?
  3. Как сделать высоту кнопок такой же, как высота панели?

Toolbar в основном представляет собой FrameLayout поэтому вы можете добавить внутри тега layout все, что захотите. В вашем случае достаточно похоже на следующее:

layout.xml

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" android:background="?colorPrimary" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <LinearLayout android:layout_width="wrap_content" android:layout_height="?attr/actionBarSize" android:divider="@drawable/divider" android:dividerPadding="8dp" android:orientation="horizontal" android:showDividers="end"> <TextView android:id="@+id/toolbar_save" style="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle" android:layout_width="match_parent" android:layout_height="match_parent" android:background="?attr/selectableItemBackground" android:drawableLeft="@drawable/ic_action_check" android:drawablePadding="8dp" android:gravity="center_vertical" android:paddingLeft="16dp" android:paddingRight="16dp" android:text="Save" android:textAllCaps="true" /> </LinearLayout> </android.support.v7.widget.Toolbar> 

divider.xml

Добавьте это в папку /res/drawable . Это используется как разделитель LinearLayout в коде выше.

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <size android:width="1dp" /> <solid android:color="@android:color/white" /> </shape> 

Код

 private void setupToolbar() { Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); // Hide the title getSupportActionBar().setTitle(null); // Set onClickListener to customView TextView tvSave = (TextView) findViewById(R.id.toolbar_save); tvSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO } }); } 

С точки зрения позиций на правой стороне: просто используйте метод onCreateOptionsMenu по умолчанию и onCreateOptionsMenu соответствующий R.menu.* .

результат

Изображение результатов