Intereting Posts
Как получить цвета системы Android Android getRelativeTimeSpanString () ошибка? Андроидный sqlite-запрос с несколькими Gradle (Android Studio) не будет компилировать 9 патчей Может ли APK быть повторно упакован после незначительного редактирования текста? В чем разница между общей установкой и активной установкой на рынке Android? Причины переноса приложения Cordova на приложение Mobile Chrome? Ошибка при создании с помощью Gradle в командной строке с проектом студии android: ошибка Xlint SDK Местоположение не найдено Android Studio + Gradle Как настроить карту в проекте xamarin.forms pcl? Какой самый простой способ поддерживать синхронизацию базы данных между несколькими устройствами iOS и Android? Android: возможно ли, чтобы фоновый поток блокировался до тех пор, пока поток пользовательского интерфейса не завершит работу? Зависимости -> Не удалось создать плагин типа «AppPlugin» Использование SQLite из активности и обслуживания Как остановить другие приложения, играющие музыку из моей текущей деятельности?

Android: удалите левое поле из пользовательского макета панели действий

Я использую пользовательское представление панели действий, и, как вы можете видеть на скриншоте ниже, в панели действий есть пустое серое пространство. Я хочу удалить его.

Введите описание изображения здесь

Что я сделал:

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> 

Solutions Collecting From Web of "Android: удалите левое поле из пользовательского макета панели действий"

Если вы добавляете Toolbar через XML, вы можете просто добавить атрибуты XML для удаления вложений содержимого.

 <android.support.v7.widget.Toolbar xmlns:app="schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primaryColor" android:contentInsetLeft="0dp" android:contentInsetStart="0dp" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" android:contentInsetRight="0dp" android:contentInsetEnd="0dp" app:contentInsetRight="0dp" app:contentInsetEnd="0dp" /> 

попробуй это:

  ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowTitleEnabled(false); View customView = getLayoutInflater().inflate(R.layout.main_action_bar, null); actionBar.setCustomView(customView); Toolbar parent =(Toolbar) customView.getParent(); parent.setPadding(0,0,0,0);//for tab otherwise give space in tab parent.setContentInsetsAbsolute(0,0); 

Я использовал этот код в своем проекте, удачи;

Я нашел другое решение (ссылка appcompat-v7), которые изменяют toolbarStyle, следующий код:

 <item name="toolbarStyle">@style/Widget.Toolbar</item> <style name="Widget.Toolbar" parent="@style/Widget.AppCompat.Toolbar"> <item name="contentInsetStart">0dp</item> </style> 

Просто измените ваши styles.xml

 <!-- ActionBar styles --> <style name="MyActionBar" parent="Widget.AppCompat.ActionBar"> <item name="contentInsetStart">0dp</item> <item name="contentInsetEnd">0dp</item> </style> 
 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" android:paddingLeft="0dp"> 

Это должно быть достаточно хорошо.

Вместо добавления панели инструментов в макет можно настроить свой пользовательский вид, как показано ниже.

 Toolbar parent = (Toolbar) customView.getParent(); parent.setContentInsetsAbsolute(0,0); 

Левая вставка вызвана contentInsetStart которое по умолчанию 16dp.

Измените это, чтобы выровнять линию.

Обновление для библиотеки поддержки v24.0.0:

Чтобы соответствовать спецификации Material Design, есть дополнительный атрибут contentInsetStartWithNavigation который по умолчанию равен 16dp. Измените это, если у вас также есть значок навигации.

Оказалось, что это часть новой спецификации материалов, представленной в версии 24 библиотеки Design.

https://material.google.com/patterns/navigation.html

Тем не менее, можно удалить дополнительное пространство, добавив следующее свойство в виджет панели инструментов.

 app:contentInsetStartWithNavigation="0dp" 

До : Введите описание изображения здесь

После : Введите описание изображения здесь

Используя AppCompatAcitivty вы можете использовать

 Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); View logo = getLayoutInflater().inflate(R.layout.custom_toolbar, null); mToolbar.addView(logo, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); mToolbar.setContentInsetsAbsolute(0,0); 

Только добавьте app:contentInsetStart="0dp" на панель инструментов, удалите оставшееся пространство.

Таким образом, ваше определение панели инструментов выглядит так

  <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" app:contentInsetStart="0dp" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

И это выглядит так

Введите описание изображения здесь

Вам нужно добавить эту строку app2: contentInsetStart = "0dp" на панели инструментов

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app2="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app2:contentInsetStart="0dp"/> 

Правильный и самый простой ответ на другой пост:

Android Lollipop, приложение AppCompat ActionBar не учитывает ширину всего экрана

Он отмечен как правильный, и после того, как я попробовал это, я могу подтвердить, что он работает.

Создайте панель инструментов следующим образом:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/menuToolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="0dp" android:background="@color/white" android:contentInsetLeft="10dp" android:contentInsetRight="10dp" android:contentInsetStart="10dp" android:minHeight="?attr/actionBarSize" android:padding="0dp" app:contentInsetLeft="10dp" app:contentInsetRight="10dp" app:contentInsetStart="10dp"></android.support.v7.widget.Toolbar> 

Пожалуйста, перейдите по этой ссылке для получения дополнительной информации.

Только добавление android:padding="0dp" работает для меня

 <android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="60dp" android:padding="0dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 
 ActionBar ab = getSupportActionBar(); ab.setDisplayShowHomeEnabled(true); ab.setDisplayShowCustomEnabled(true); setDisplayShowTitleEnabled(true); View customView = getLayoutInflater().inflate(R.layout.activity_main,null); //here activity_main.xml is the GUI design file. ab.setCustomView(customView); Toolbar parent =(Toolbar) customView.getParent(); //use V7 Toolbar import parent.setContentInsetsAbsolute(0, 0); setPadding(5,0,0,0); ab.setIcon(R.mipmap.ic_launcher); 

Очень простой способ удаления левой панели панели инструментов, пожалуйста, используйте этот способ

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/toolbar_color" android:layout_marginLeft="-20dp"/> 

Его выглядит так круто, см. Изображение

Введите описание изображения здесь

Вы можете просто использовать относительный макет внутри группы просмотра панели инструментов в вашем XML-файле и отрегулировать позиции виджетов по мере необходимости для вашего использования. Не нужно создавать собственные макеты, раздувать их и прикреплять к панели инструментов. После выполнения кода java используйте setContentInsetsAbsolute (0,0) с вашим объектом панели инструментов, прежде чем устанавливать его в качестве панели действий поддержки в вашем макете.

Было бы лучше добавить элемент фона в стиль панели действий приложения в соответствии с цветом фона настраиваемой панели действий:

 <item name="android:background">@color/actionbar_bgcolor</item> 

После android 6.0, панель действий даже имеет свободное пространство справа и не может быть установлена. Добавьте корректировку правого поля в действие следующим образом: ( представление представляет собой настраиваемую панель действий или правую кнопку в ней)

 int rightMargin = Build.VERSION.SDK_INT>=Build.VERSION_CODES.M ? 0 : 8; // may the same with actionbar leftMargin in px ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams(); p.setMargins(p.leftMargin, p.topMargin, rightMargin, p.bottomMargin); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ p.setMarginEnd(rightMargin); } view.setLayoutParams(p); 

Махинад панели действий поддерживается только после приложения Android 3.0+. Если мы используем панель инструментов (поддержки lib v7) вместо этого, мы должны поместить ее в каждый xml каждого действия и позаботиться о проблеме перекрытия с панелью состояния системы на устройстве Android 5.0 или более поздней версии.

Поддерживает ли ваше приложение андроид 5? Если вы не поддерживаете, вы можете понизить версию панели поддержки поддержки v7. Это выглядит так:

Msgstr "Не использовать v7: 21+

Также сделать целевую версию приложения менее 21.

TargetSdkVersion 14

Если ваше приложение поддерживает андроид 5 ->, вам понадобится пользовательская ToolBar. (У Becuase appcombat-v7: 21 есть некоторые изменения).