Intereting Posts
Лучшая практика Android по обновлению пользовательского интерфейса от BroadcastReceiver до определенной активности Как ограничить приложение только для телефонов Android Как установить высоту одного компонента компоновки на одну и ту же высоту другого компонента? Почему одноэлементный класс выживает? Команды Gradle выходят из строя на API 23 Изображение эмулятора Google API (armeabi-v7a) Android adb не найден XML-атрибуты от макета слияния до RelativeLayout через надувание Android: AutoCompleteTextView с предложениями по умолчанию Ресурс colors.xml не работает Как мы можем удалить файл из папки с ресурсами во время выполнения в android? Есть ли #ifdef в Qt, чтобы определить, строим ли мы для Android? Проблемы при масштабировании изображения YUV с использованием библиотеки libyuv Android Material Design: Не удалось найти стиль «toolbarStyle» в текущей теме Сбой при анимации вложенных представлений в совместно используемом элементе Переход активности? Как я могу скрыть свой API-ключ, чтобы кто-нибудь разложил мое приложение, не увидел бы его?

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

У меня проблема с попыткой центрировать кнопку «Назад» на панели инструментов поддержки. Я использую его внутри ActionBarActivity.

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:toolbar="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light" toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

И настройте навигацию внутри функции ActivityCreatation onCreate() следующим образом:

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(R.string.title_activity_scanner); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Однако я получаю следующее: Не центрированный снимок экрана кнопки Как вы видите, обратная кнопка неуместна

Изменить: проблема, похоже, заключается в настраиваемом значении для параметра ?attr/actionBarSize установленного на 40dp, однако теперь выясняется, что это название, которое вместо этого заменяется.

Solutions Collecting From Web of "Как центрировать кнопку панели инструментов?"

С сайта developer.android.com :

Панель инструментов поддерживает более сфокусированный набор функций, чем ActionBar. От начала до конца панель инструментов может содержать комбинацию следующих дополнительных элементов:

Кнопка навигации. Это может быть стрелка «Вверх», «Переключение меню навигации», «Закрыть», «Коллапс», «Сделано» или другой символ выбора приложения. Эта кнопка всегда должна использоваться для доступа к другим навигационным адресатам в контейнере панели инструментов и ее обозначенному содержимому или иначе оставить текущий контекст, обозначенный на панели инструментов. Кнопка навигации вертикально выровнена на минимальной высоте панели инструментов, если она установлена.

Поэтому, если вы установите атрибут minHeight так же, как и высота вашей панели инструментов ( layout_height ), стрелка назад будет центрирована по вертикали.

Внутри ActionBarActivity

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBat().setTitle("Hello World"); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); 

Код макета:

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/primary" app:theme="@style/ToolbarTheme" app:popupTheme="@style/Theme.AppCompat"/> 

И стиль:

  <style name="AppTheme.Base" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primaryDark</item> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="windowActionBar">false</item> </style> <style name="AppTheme" parent="AppTheme.Base"> 

Помните, что панель инструментов – это только группа viewgroup, поэтому вы можете ее стиль любым способом. Вот ссылка на изображение: образец панели инструментов

Надеюсь, поможет.

Лучший способ добиться этого – удалить обычную кнопку «Назад» на панели инструментов и добавить пользовательский ImageButton в свой XML-макет и установить для него образ. Вы можете разместить этот ImageButtton там, где хотите на панели инструментов.

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

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/toolbar" layout="@layout/toolbar" /> <ImageButton android:layout_width="60dp" android:layout_height="60dp" android:id="@+id/button" android:src="@drawable/attach_icon" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout> 

Для меня ни один из решений не работал. В моем случае проблема заключалась в том, что я применил край:

  <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" ... > <View android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" /> </android.support.v7.widget.Toolbar> 

После непосредственного применения к панели инструментов кнопка была центрирована по вертикали:

  <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" ... > <View android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.v7.widget.Toolbar> 

Вывод ответа @Rick Sanchez – если вы знаете размер атрибута minHeight панели инструментов, вы можете использовать:

 android:gravity="top" app:titleMarginTop="@dimen/margin_to_center" 

На панели инструментов, чтобы центрировать текст. Если вы используете android:minHeight="?actionBarSize" тогда это будет около 13p

@Rick Sanchez ответ – это работа, настройка макета панели инструментов – то же самое, что и minHeight

Я нашел в конструкторе панели инструментов поле, которое может настроить гравитацию кнопки, mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

, Но v7 поддержка панели инструментов не может быть установлена, mButtonGravity = Gravity.TOP;