Я использую настраиваемый вид панели действий, и, как вы можете видеть на скриншоте ниже, на панели действий есть пустое серое пространство. Я хочу удалить это.
Что я сделал:
RES / значения-V11 / styles.xml
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
RES / значения / my_custom_actionbar.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:height">60dp</item>
</style>
</resources>
манифест
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/AppName"
android:theme="@style/AppBaseTheme" >
<!-- activities... etc -->
</application>
Основное занятие
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ActionBar actionbar = getSupportActionBar();
actionbar.setDefaultDisplayHomeAsUpEnabled(false);
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setDisplayShowCustomEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(false);
actionbar.setHomeButtonEnabled(false);
// Add the custom layout
View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
actionbar.setCustomView(view);
}
Я нашел недавний пост, который указывает, что есть проблема с последним выпуском. Я также обновил ADT и SDK до Android 5.
Пользовательское представление Android ActionBar не заполняет родительский вид
Я не знаю, что мне делать.
Редактировать (частичное решение):
Не работает на Android <= API 10.
Android Lollipop, AppCompat Пользовательское представление ActionBar не занимает всю ширину экрана
Что я изменил:
Используйте последнюю версию SDK:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Добавить toolbarStyle
:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="android:toolbarStyle">@style/ToolbarStyle</item>
<item name="toolbarStyle">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
<item name="android:contentInsetStart">0dp</item>
</style>
android
xml
android-actionbar-compat
Збарча Кристиан
источник
источник
Ответы:
Если вы добавляете
Toolbar
через XML, вы можете просто добавить атрибуты XML, чтобы удалить вставки содержимого.источник
android.support.v7.widget.Toolbar
:app:contentInsetStartWithNavigation="0dp"
было достаточно.попробуй это:
Я использовал этот код в своем проекте, удачи;
источник
actionBar.setCustomView(R.layout.app_title_bar);
Toolbar parent =(Toolbar) actionBar.getCustomView().getParent();
parent.setContentInsetsAbsolute(0,0);
а не раздувать макет.parent.setPadding(0, 0, 0, 0);
для таблетокЛевая вставка вызвана
contentInsetStart
панелями инструментов, которые по умолчанию составляют 16dp.Измените это, чтобы выровнять к ключевой линии.
Обновление для библиотеки поддержки v24.0.0:
Для соответствия спецификации Material Design есть дополнительный атрибут,
contentInsetStartWithNavigation
который по умолчанию равен 16dp. Измените это, если у вас также есть значок навигации.Оказалось, что это является частью новой Спецификации дизайна материала, представленной в версии 24 библиотеки проектирования.
https://material.google.com/patterns/navigation.html
Однако можно удалить дополнительное пространство, добавив следующее свойство в виджет панели инструментов.
Перед :
После :
источник
Я нашел другое разрешение (ссылка appcompat-v7), которое изменяет toolbarStyle, следующий код:
источник
Это должно быть достаточно хорошо.
источник
Просто измените ваш styles.xml
источник
Вместо добавления панели инструментов в макет, вы можете установить свой собственный вид, как показано ниже.
источник
Только добавить
app:contentInsetStart="0dp"
на панель инструментов удалить это оставленное место.Таким образом, ваше определение панели инструментов выглядит следующим образом
и это выглядит так
источник
Используя
AppCompatAcitivty
вы можете использовать простоисточник
Вам нужно добавить эту строку app2: contentInsetStart = "0dp" на панели инструментов
источник
app:contentInsetStart="0dp"
Я нигде не нашел решения для своей проблемы (первое изображение), но в итоге я нашел простейшее решение после нескольких часов копания. Обратите внимание, что я пробовал использовать множество атрибутов xml, например
app:setInsetLeft="0dp"
и т. Д., Но ни один из них не помог в этом случае.Фото 1
следующий код решил эту проблему, как на рисунке 2
Фото 2
источник
Установка атрибутов "contentInset ..." на 0 на панели инструментов не работает для меня. Решение Nilesh Senta по обновлению стиля сработало!
styles.xml
Java (onCreate)
источник
Создайте панель инструментов так:
Пожалуйста, перейдите по этой ссылке для более - Android Советы
источник
только добавление
android:padding="0dp"
работы для меняисточник
источник
Вы можете просто использовать относительный макет внутри группы видов панели инструментов в своем XML-файле и настроить положение виджетов так, как вам требуется для вашего варианта использования. Нет необходимости создавать собственный макет, раздувать его и прикреплять к панели инструментов. Сделав это в своем Java-коде, используйте setContentInsetsAbsolute (0,0) с вашим объектом панели инструментов, прежде чем устанавливать его в качестве панели действий поддержки в вашем макете.
источник
Было бы лучше добавить элемент фона в стиль панели действий приложения, чтобы он соответствовал цвету фона настраиваемой панели действий:
После android 6.0 панель действий даже имеет поле справа-справа и не может быть установлена. Добавьте корректировку правого поля в упражнении следующим образом: ( представление - это настраиваемая панель действий или правая кнопка в ней)
Механизм Actionbar поддерживается только после приложения Android 3.0+. Если вместо этого мы используем панель инструментов (для поддержки lib v7), мы должны расположить ее в каждом xml каждого действия и позаботиться о проблеме перекрытия строки состояния системы на устройстве Android 5.0 или более поздней версии.
источник
Котлин
источник
эта работа для меня
источник
Если вы проверяете документацию панели инструментов, по умолчанию у нее определен стиль и есть элемент contentInsetStart.
Если вы хотите переопределить этот отступ, то это можно сделать двумя способами.
1. Переопределите стиль и добавьте свой собственный стиль со значениями contentInsetStart и contentInsetEnd.
2. В XML вы можете напрямую определить значения contentInsetStart и contentInsetEnd
источник
Поддерживает ли ваше приложение Android 5? Если не поддерживается, то вы можете понизить версию поддержки actionbar v7. Это выглядит так:
также сделать целевую версию приложения менее 21.
Если ваше приложение поддерживает Android 5 -> вам понадобится пользовательская панель инструментов. (Becuase appcombat-v7: 21 есть некоторые изменения).
источник