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

<p>я новичок в разработке для android, и у меня большие проблемы с созданием пользовательской панели инструментов. мои требования:</p><ol> <li>пользовательская кнопка слева (иконка + текст)</li> <li>разделитель после пользовательской кнопки</li> <li>высота кнопок должна быть такой же, как на панели инструментов (без полей)</li> </ol><p>вот пример изображения, которое объясняет мои требования: <a href="https://i.stack.imgur.com/v9eft.png"> <img src="https://i.stack.imgur.com/v9eft.png" alt="enter image description here"> </a> </p><p>я пытался использовать <code>actionbar.setcustomview(v);</code>, но это не решило мои проблемы:</p><ol> <li>правые кнопки имеют верхнее/нижнее поле - они меньше, чем панель инструментов</li> <li>я не смог добавить разделитель.</li> <li>левая кнопка (из пользовательского вида) была меньше высоты панели инструментов.</li> </ol><p>мои вопросы:</p><ol> <li>мне действительно нужен пользовательский вид, чтобы добавить пользовательскую кнопку слева?</li> <li>как добавить разделитель слева?</li> <li>как сделать так, чтобы высота кнопок соответствовала высоте панели инструментов?</li> </ol>

<p><code>toolbar</code> - это, по сути, <code>framelayout</code>, так что вы можете добавить внутрь тега макета все, что захотите. в вашем случае что-то вроде следующего кажется достаточным:</p><p><strong>layout.xml</strong></p><pre><code><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> </code></pre><p><strong>divr.xml</strong></p><p>добавьте это в свою папку <code>/res/drawable</code>. это используется как разделитель <code>linearlayout</code> в коде выше.</p><pre><code><?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <size android:width="1dp" /> <solid android:color="@android:color/white" /> </shape> </code></pre><p><strong>код</strong></p><pre><code>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 } }); } </code></pre><p>с точки зрения элементов на правой стороне: просто используйте метод <code>oncreateoptionsmenu</code> по умолчанию и накачайте соответствующий ресурс <code>r.menu.*</code>.</p><p><strong>результат</strong></p><p> <a href="https://i.stack.imgur.com/dc4wx.png"> <img src="https://i.stack.imgur.com/dc4wx.png" alt="result image"> </a> </p>

<pre><code> <android.support.v7.widget.toolbar android:layout\_width="match\_parent" android:layout\_height="?actionbarsize" app:contentinsetleft="0dp" app:contentinsetstart="0dp" app:contentinsetstartwithnavigation="0dp" /> </code></pre><p>вам также нужно приложение: contentinsetstartwithnavigation = "0dp" на панели инструментов</p>