2014-10-19 4 views
168

Как мне избавиться от дополнительного дополнения на новой панели инструментов с Android SDK API версии 21 (библиотека поддержки)?Панель инструментов для Android 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. Что я сделал не так, или что мне нужно сделать, чтобы избавиться от дополнительного дополнения?

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

В соответствии с подбором материала спецификации, счетчик должен быть 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> 

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

+4

вы также удалось удалить верхний/нижний Прокладки? Я попытался, но ничего не происходит даже при настройке всех свойств 'contentInsetX' на 0dp. – patrickjason91

+0

похоже на @ patrickjason91 Можно ли выровнять ImageView с верхней панелью панели (изображение имеет w, h: wrap_content) внутри панели инструментов? Я пробовал все, но не мог этого сделать. Моя цель - иметь что-то похожее на ленту с закладкой «висит» с верхней части панели инструментов, ставка всегда есть наложение, которое я не могу устранить – Ewoks

ответ

242

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

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

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

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

+0

Большое вам спасибо за это. Кажется немного странным, чтобы отойти от прокладки и поля. Это андроид 5? –

+1

ContentInsetStart используется для вставки из любой панели инструментов, предоставляемой пользовательским интерфейсом (например, значок навигации). –

+0

И как бы вы выровняли радиобуй с иконкой на панели инструментов? У меня есть аналогичные проблемы: http://stackoverflow.com/questions/26623042/align-an-icon-with-the-toolbar-icon-android-material-design –

130

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

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

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

хитрость здесь просто использовать следующий -

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

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

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

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

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

+1

Спасибо, он отлично работал –

+0

, это может быть поведение по умолчанию. Спасибо =) –

+0

Ты лучший :) –

1

Вот что я сделал, и он отлично работает на каждой версии 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 

Результат с Keylines Shown

enter image description here

3

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

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

8

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

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); 
0

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

Итак: 72-16 = 56

Therefor: добавить 56dp отступов, чтобы поставить себя на отступ/маржинальный общую 72dp.

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

Dimen Resource File

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

3

Сочетание

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

и

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

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

8

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

android:contentInsetStart="0dp" 
app:contentInsetStart="0dp" 
-1
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0); 
Смежные вопросы