Как установить параметры нижнего колонтитула и элементы профиля NavitationView
? выглядит как ящик для входящих сообщений электронной почты. Эти NavitationView
элементы завышены ресурсом меню, но я не знаю , как установить нижние элементы на ресурс меню, или как я могу установить пользовательский вид NavigationView
или смещение дна? Я попытался сделать это <LinearLayout...>
как нижний колонтитул, но на маленьких экранах нижний колонтитул накладывается на элементы, и я не могу прокрутить меню, я попытался установить отступ нижнего колонтитула NavigationView
, но нижний колонтитул тоже принимает отступ.
Это не прокрутка на маленьких экранах:
<android.support.design.widget.NavigationView
android:id="@+id/drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/kuona_drawer_header"
app:menu="@menu/drawer">
<LinearLayout...>
</android.support.design.widget.NavigationView>
Это прокручивается, но нижний колонтитул находится над пунктами меню:
<android.support.design.widget.NavigationView
android:id="@+id/drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:paddingBottom="96dp"
app:headerLayout="@layout/kuona_drawer_header"
app:menu="@menu/drawer">
<LinearLayout...>
</android.support.design.widget.NavigationView>
res/menu/drawer.xml
Файл меню ящика :
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/action_current_list"
android:checked="true"
android:icon="@drawable/ic_current_list"
android:title="@string/current_list" />
<item
android:id="@+id/action_manage_lists"
android:icon="@drawable/ic_my_lists"
android:title="@string/my_lists" />
<item
android:id="@+id/action_search_products"
android:icon="@drawable/ic_search_black_24dp"
android:title="@string/search_products" />
<item
android:id="@+id/action_deals"
android:icon="@drawable/ic_product_promo"
android:title="@string/deals" />
</group>
</menu>
/res/menu/drawer.xml
menuItem.setIcon(Drawable)
.Ответы:
Если вам нужен фиксированный нижний колонтитул (без прокрутки) в меню навигации, вам нужно обернуть NavigationView вокруг другого макета, как вы разместили. NavigationView работает как FrameLayout, поэтому в результате внутренний макет «укладывается» поверх элементов меню NavigationView. Вот один из способов расположить это, используя LinearLayout для элементов нижнего колонтитула:
Фиксированный нижний колонтитул
В этом примере я использовал TextView, но вы можете использовать все, что захотите, для представлений нижнего колонтитула. Чтобы элементы нижнего колонтитула не перекрывались с нижней частью меню, добавьте несколько фиктивных элементов в конец файла ресурсов меню (они будут действовать как «разделители»):
Рез / меню / drawer.xml
Наконец, не забудьте добавить прослушиватели кликов в Activity для фактических представлений нижнего колонтитула:
Прокрутка нижнего колонтитула
Если вы разрешите прокрутку нижнего колонтитула вместе с остальной частью NavigationView, это упростит задачу (без дополнительных макетов или прослушивателей щелчков). Просто добавьте элементы нижнего колонтитула в файл ресурсов меню как уникальные
<group>
(это создаст разделительную линию ), и все будет обрабатываться автоматически и прокручиваться вместе:Рез / меню / drawer.xml
источник
<group>
строку, если вам нужна разделительная линия, в противном случае нижний колонтитул навигации приложения Gmail выглядит как обычные пункты меню (по крайней мере, для меня).<dimen name="design_navigation_padding_bottom" tools:override="true">48dp</dimen>
indimen.xml
вместо использования фиктивных элементов в меню! Идеально !Я просто дам вам подсказку, как ее решить, но у меня нет возможности протестировать ее в NavigationView, и я почти уверен, что она сработает.
вот образец макета xml;
вот результат:
трюк заключается в применении отступов к родительскому элементу и минус поля к дочернему.
Быстрая попытка:
источник
Следуя подходам, описанным в других ответах о вложенных представлениях навигации, возникли некоторые проблемы:
Мое решение всех этих проблем было следующим:
Здесь NestedScrollView действует как родительский элемент прокрутки для sub-NavigationView. Это означает, что sub-NavigationView никогда не отображает полосы прокрутки, но весь контент отображается в плоском виде.
Макет spacer_to_bottom заполняет все оставшееся пространство, так что с несколькими значками меню нижний колонтитул остается внизу.
Наконец, фиксированный нижний колонтитул добавляется к линейному макету, который начинается с настоящего меню (sub-NavigationView), разделителя и имеет внизу нижний колонтитул.
Здесь вы можете найти полный рабочий пример как AndroidStudio-Project: https://github.com/MarcDahlem/AndroidSidemenuFooterExample
В частности, панель навигации можно найти здесь: https://github.com/MarcDahlem/AndroidSidemenuFooterExample/blob/master/app/src/main/res/layout/activity_main.xml
Скриншоты:
источник
Самый простой ответ - добавить кнопку внутри макета ящика и установить для нее значение силы тяжести снизу в
navigationview.xml
.Вот код:
источник
У вас должен быть макет представления навигации контейнера, а затем он должен содержать еще два макета навигации. Вы выравниваете их по верхней и нижней части родительского макета.
Я бы рекомендовал использовать представление навигации в качестве родительского, а не FrameLayout, потому что это, по сути, ScrimFrameLayout и лучше взаимодействует со строкой состояния.
Вот пример того, как должна выглядеть ваша деятельность:
Вы можете прочитать об этом больше и посмотреть пример здесь: http://blog.nitish.io/post/122633295558/android-design-library-navigationview-with-top
источник
Я знаю его поздний ответ, но это идеальный и точный ответ, который ищут большинство разработчиков.
Чтобы добавить нижний колонтитул в представление навигации, добавьте пользовательское представление в меню навигации, как показано ниже:
footer_navigation_menu.xml
Теперь добавьте вид выше в xml меню с атрибутом group, чтобы его можно было отличить от нижнего колонтитула в меню.
profile_menu.xml
Вот и все. Ниже вывод:
источник
Это своего рода облом, что в NavigationView нет возможности добавлять нижний колонтитул. Но вы можете попробовать что-то вроде этого,
В случае, если ваш нижний колонтитул представляет собой список,
Но, если это какой-то нестандартный вид,
Также в этом случае вам нужно будет установить
x = height of your custom footer view
Надеюсь, поможет.
источник
Я сделал то же самое следующим образом:
Здесь главное, чтобы гравитация макета была внизу, например
источник
Следуя вашему подходу, некоторые незначительные изменения могут помочь в том, чего вы хотите достичь.
И установите несколько элементов-заглушек в меню, чтобы элементы меню не перекрывались.
Также вы можете добавить прослушиватель кликов в нижний колонтитул.
источник
Мое решение с фиксированным нижним колонтитулом и меню прокрутки (проверено на 100%)
источник
Вот как я могу добавить макет внизу навигации:
Обновленные библиотеки
источник
NavigationView
первый дочернийListView
элемент содержит как заголовок, так и пункты меню.Единственное, что необходимо для добавления нижнего колонтитула, - это вызвать .addFooterView в ListView.
Дополнительная информация: http://www.andreabaccega.com/blog/2015/08/28/how-to-add-footer-to-navigationview/
Скопируйте и вставьте код:
источник
Просто поместите другой макет в свой NavigationView:
Хитрость в том, чтобы использовать layout_gravity = "bottom" - это поместит весь ваш макет внизу и test, test2 будут правильно сложены.
источник
использовать это..
затем установите нижний отступ в NavigationMenuView
источник
Попробуйте это, эта работа для меня.
источник
Я использую эту форму, работаю у меня. в пейзаже и портрете.
источник
источник
<android.support.design.widget.NavigationView>...</android.support.design.widget.NavigationView>
. для более подробной информации, пожалуйста, проверьте репозиторий github ( github.com/mehul0/AndroidSidemenuFooterExample-master )источник
Структура макета липкого верхнего и нижнего колонтитула в меню ящика:
Полный макет:
источник
Попробуйте это, эта работа для меня. https://github.com/MarcDahlem/AndroidSidemenuFooterExample/blob/master/app/src/main/res/layout/activity_main.xml
Однако вы должны отключить NavigationViewScrolling для более плавной прокрутки
Скриншоты:
источник
Нижний колонтитул с прокруткой для версии> 23.xx
Наконец-то мне удалось добиться того, что я хотел, к сожалению, похоже, что больше невозможно просто взять ссылку на ListView и добавить верхний и нижний колонтитулы, как в версиях ниже 23.xx (как описано Андреа Баччега). Сделать это для заголовка все еще возможно:
Но в настоящий момент невозможно добавить нижний колонтитул. Однако я нашел обходной путь на случай, если вы просто пытаетесь добавить нижний колонтитул: вы просто меняете представление, это добавит верхний колонтитул внизу, который ведет себя как обычный нижний колонтитул. Только убедитесь, что вы создали свое меню в обратном порядке.
источник
Мое личное решение для фиксированного верхнего и нижнего колонтитула расширяет NavigationView следующим образом:
Первоначально NavigationView создает LinearLayout в качестве первого элемента в RecyclerView и прокручивает все содержимое вместе. Идея состоит в том, чтобы создать отдельные представления для нижнего и верхнего колонтитула, а затем сдвинуть их вверх и вниз с помощью Gravity. Позже измерение содержимого для RecyclerView определяет прокручиваемое содержимое.
Вот библиотека, содержащая код, который я написал. https://github.com/guness/NavigationView
Хорошая сторона этого, теперь я могу определить вид нижнего колонтитула в xml так же, как и заголовок в родном:
источник
Вот решение, которое не требует вложенности и которое динамически регулирует нижний отступ внутреннего NavigationMenuView на основе собственной высоты представления нижнего колонтитула, что означает, что высота нижнего колонтитула может быть установлена на,
wrap_content
и вы можете динамически изменять видимость нижнего колонтитула наVISIBLE
илиGONE
.Вам необходимо определить идентификатор design_navigation_view в вашем ids.xml:
И используйте вот так:
Протестировано с помощью
com.google.android.material:material:1.0.0
.источник
Если вы используете listview, вы можете попробовать этот способ. Поддержка представления списка добавляет функцию просмотра нижнего колонтитула, поэтому вы можете добавить настраиваемое представление нижнего колонтитула R.layout.drawer_footer, используя объект listview, как показано ниже.
В моем случае я использую expandableListView вместо listview (listview также имеет функцию addFooter). Надеюсь, этот способ поможет тебе
источник
Поместите эти строки в свой макет меню. Надеюсь, это решит вашу проблему:
источник