Как я могу удалить ненужные верхние отступы в представлении навигации?

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

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

Как его можно удалить?

исходный код можно найти здесь: https://github.com/chrisbanes/cheesesquare


comment
На всякий случай, если вы думаете, что это ошибка, это не так, скорее это часть Руководства по дизайну материалов. google.com/design/spec/components/lists.html# lists-specs Это должно быть там, если вы пытаетесь соответствовать стандарту Google. Это заполнение 8dp.   -  person Eugene H    schedule 02.06.2015
comment
Я не имею в виду заголовок, я знаю, что это ориентир. я имел в виду верхний отступ между первым элементом и заголовком.   -  person Ahmed Talaat    schedule 02.06.2015
comment
Да, я знаю это. Это должно быть там. это часть руководства. Взгляните на изображение здесь. Есть разделитель 8dp. И это есть во всех последних приложениях Google Material. material-design.storage.googleapis.com/publish/ material_v_4/   -  person Eugene H    schedule 02.06.2015
comment
Обновление Gmail с Material Design. Но это всего лишь рекомендации и, возможно, они могут быть изменены. Это довольно новая библиотека поддержки, и я уверен, что в ближайшем будущем будет больше адаптации. images.anandtech.com/doci/8671/   -  person Eugene H    schedule 02.06.2015
comment
Что ж, вы правы, но это должно дать мне некоторый контроль, так как я думаю, что это дает уродливый вид, когда элемент выбран.   -  person Ahmed Talaat    schedule 02.06.2015
comment
Я думал точно так же, когда реализовывал материальный дизайн некоторое время назад. Он растет на вас, я уверен, если он не настраивается сейчас, он будет в ближайшем будущем.   -  person Eugene H    schedule 02.06.2015
comment
Мне тоже поначалу не понравилась верхняя обивка. Но @EugeneH прав, это официальная спецификация дизайна материалов, и это определенно сделано намеренно. Чем больше я его использую, тем больше мне кажется, что он имеет смысл с точки зрения дизайна. В зависимости от того, что отображается в представлении заголовка, может возникнуть некоторая визуальная путаница без отступов, чтобы отличить элементы списка от заголовка.   -  person hungryghost    schedule 08.06.2015


Ответы (5)


NavigationView стремится соответствовать спецификациям для панели навигации, которые укажите пространство 8dp между областями содержимого. Как правило, нет способов переопределить NavigationView, чтобы специально нарушить спецификации.

характеристики дизайна материалов

person ianhanniballake    schedule 02.06.2015
comment
Вы можете легко переопределить это значение. Возможно, это дополнение можно добавить программно, чтобы избежать этого случая. - person Gabriele Mariotti; 24.06.2015

Вы можете переопределить предопределенные размеры в своем dimens.xml качестве;

<dimen name="design_navigation_padding_top_default" tools:override="true">0dp</dimen>
<dimen name="design_navigation_separator_vertical_padding" tools:override="true">0dp</dimen>
<dimen name="design_navigation_padding_bottom" tools:override="true">0dp</dimen>

Другие возможные значения приведены здесь: https://github.com/android/platform_frameworks_support/blob/master/design/res/values/dimens.xml

person Uğur Tılıkoğlu    schedule 30.12.2015
comment
@kishorejethava, не могли бы вы проверить файлы ресурсов в сгенерированной папке? это может быть классический случай очистки-восстановления - person Uğur Tılıkoğlu; 15.02.2017
comment
Эти значения можно найти по адресу github.com/ aosp-mirror/platform_frameworks_support/blob/master/ - person superUser; 11.12.2017

Вы должны прочитать ответ Яна. NavigationView следует рекомендациям по материалам, и вы не должны нарушать эти спецификации.

Однако в настоящее время вы можете переопределить это значение в своем проекте.

Просто добавьте к dimens.xml:

<dimen name="design_navigation_separator_vertical_padding">0dp</dimen>

Предупреждение:

  • в будущем команда Android может изменить это значение!
  • одно и то же значение применяется к каждому разделителю в списке

NavigationView использует LinearLayout в качестве заголовка. Вы можете увидеть этот макет в исходном коде:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:paddingBottom="@dimen/design_navigation_separator_vertical_padding" />
person Gabriele Mariotti    schedule 24.06.2015
comment
@headsvk Спасибо. Обновлен ответ - person Gabriele Mariotti; 05.01.2016

очень простой шаг: добавьте следующий атрибут к вашей базовой теме приложения (stylename=AppTheme) Style.xml:

        <item name="listPreferredItemHeightSmall">18dp</item>
person Liya    schedule 21.06.2018