Прокладка панели инструментов Android API 21

Как мне избавиться от дополнительного дополнения на новой панели инструментов с Android SDK API версии 21 (библиотека поддержки)?

Я говорю о красных стрелках на этой картине: enter image description here

Вот код, который я использую:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary"
        android:padding="0dp"
        android:layout_margin="0dp">

        <RelativeLayout
            android:id="@+id/action_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="0dp"
            android:padding="0dp"
            android:background="#000000">

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        </RelativeLayout>
</Toolbar>

Как вы можете видеть, я установил все соответствующие дополнения в 0, но на Spinner все еще есть прокладка. Что я сделал не так, или что мне нужно сделать, чтобы избавиться от дополнительного дополнения?

Edit Некоторые спрашивают, почему я пытаюсь это сделать.

В соответствии с спецификациями Material Design, счетчик должен быть 72dp с левой стороны desc

Мне нужно нейтрализовать заполнение, которое Google разместил там, чтобы правильно разместить мой счетчик: desc

Изменить 2

Как объясняет Крис Бэйн ниже, я установил contentInsetStart равным 0. Для библиотеки поддержки вам нужно будет использовать пространство имен приложений:

<android.support.v4.widget.DrawerLayout
    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="match_parent">

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

</android.support.v4.widget.DrawerLayout>

Я надеюсь, что это кому-то поможет, меня несколько раз путали.

Ответ 1

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

Измените это на 72dp для выравнивания по ключевой строке.

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

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

Ответ 2

Выше ответ верен, но есть еще одна вещь, которая может создать проблемы (по крайней мере, это создало проблему для меня)

Я использовал следующее, и он не работает должным образом на старых устройствах -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

Трюк здесь просто использует следующее -

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

и избавиться от -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"

И теперь он должен хорошо работать на всех устройствах.

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

Ответ 3

Если кто-то еще споткнется здесь... вы можете установить дополнение, например:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

int padding = 200 // padding left and right

toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());

Или contentInset:

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);

Ответ 4

Простое добавление этой двух строк в панель инструментов. Затем мы получаем новое удаленное левое боковое пространство bcoz по умолчанию 16dp.

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"

Ответ 5

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

<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>

Вам нужно добавить

contentInset

чтобы добавить интервал

перейдите по этой ссылке для получения дополнительной информации Советы для Android

Ответ 6

Комбинация

android:padding="0dp" В xml для панели инструментов

и

mToolbar.setContentInsetsAbsolute(0, 0) В коде

Это сработало для меня.

Ответ 7

Вот что я сделал, и он отлично работает на каждой версии Android.

toolbar.xml

<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/toolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/primary_color"
    app:theme="@style/ThemeOverlay.AppCompat"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp" <!-- Add margin -->
        android:layout_marginStart="16dp"
        android:gravity="left|center"
        android:text="Toolbar Title" <!-- Your title text -->
        android:textColor="@color/white" <!-- Matches default title styles -->
        android:textSize="20sp"
        android:fontFamily="sans-serif-medium"/>

</android.support.v7.widget.Toolbar>

MyActivity.java (Чтобы скрыть заголовок панели инструментов по умолчанию)

getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title

Результат с показанными ключевыми строками

enter image description here

Ответ 8

Хорошо, если вам нужно 72dp, не могли бы вы просто добавить разницу в заполнении в xml файле? Таким образом, вы держите Androids default Inset/Padding, который они хотят, чтобы мы использовали.

Итак: 72-16 = 56

Для этого: добавьте отладку 56dp, чтобы поставить себя на уровень отступа/поля в 72dp.

Или вы можете просто изменить значения в файлах Dimen.xml. что я сейчас делаю. Он меняет все, весь макет, включая ToolBar, когда он реализован на новом правильном пути Android.

Файл ресурсов Dimen

Добавленная ссылка показывает значения Dimen на 2dp, потому что я изменил ее, но по умолчанию она была установлена ​​на 16dp. Просто FYI...

Ответ 9

это работает для меня на моем телефоне Android 7.11:

<!-- TOOLBAR -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:contentInsetStartWithNavigation="0dp">

    <TextView
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_account_title"
        android:textColor="@color/color_dark_grey"/>

</android.support.v7.widget.Toolbar>

примечание: у меня не было никакого успеха с padding = 0 или contentInsetLeft = 0 или contentInsetStart = 0

Ответ 10

((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);