Intereting Posts
Поддерживаемые размеры поддерживаемых камер Android При использовании ActionMode строка состояния становится черной на Lollipop Тайм-аут распознавания речи Google SelectableItemBackground как элемент в списке слоев Android ExoPlayer: решает проблему без разрыва / беспрепятственного воспроизведения, которая нарушена для Android Media Player Адаптер курсора и пример sqlite В Java, что происходит, когда у вас есть метод с неопределенным ключевым словом? Можно ли предлагать маршруты с Google Maps в приложении android2.2? Как создать модальное диалоговое окно в android Как получить почтовые сообщения Gmail программно в android Spinner не отображает выбранное значение Могу ли я увеличить количество кнопок на области щелчка программно? Android: изменить стандартное домашнее приложение Код примера FFmpeg для создания видеофайла из неподвижных изображений JNI Android Java.lang.IllegalStateException: добавлен фрагмент

Ящик для навигации с крутильным краем в android

Я сделал разные типы ящиков навигации, такие как Permanent, Persistent Mini variant, Temporary.

Все они имеют прямоугольник в форме контура, как показано ниже.

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


Требование : я хочу создать навигационный ящик с изогнутым краем (с правой стороны).

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

Давайте посмотрим на мой навигатор. Посмотреть

<android.support.design.widget.NavigationView android:background="#FFF" android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer"/> 

Он содержит app:headerLayout и app:menu Если я могу изменить родительские границы NavigationView это app:menu app:headerLayout и app:menu будет отображаться внутри его родительских границ. Я прав ?

Изменение android:background не работал для меня.


Как насчет добавления dimens.xml в dimens.xml есть ли какой-либо атрибут, который я могу использовать?

Возможно ли кривое наклонение края навигационного ящика (программно или с использованием изображения)?

Если да, то любое руководство будет высоко оценено.

Solutions Collecting From Web of "Ящик для навигации с крутильным краем в android"

Наконец, я решил создать библиотеку для этого случая: https://github.com/rom4ek/ArcNavigationView , не стесняйтесь исследовать и использовать ее 🙂 Это основано на ArcLayout Флорана Шампиньи с некоторыми корректировками, благодаря ему.

Преимущество этой библиотеки в том, что она была построена поверх стандартного NavigationView из библиотеки дизайна Android, и вы можете использовать ее как обычно, просто измените имя класса. Надеюсь, скоро будет опубликовано в jcenter . Вот несколько скриншотов:

Спасибо за идею! 🙂

Этот Lib может помочь вам

https://github.com/mzule/FantasySlide

Как использовать: XML

 <com.github.mzule.fantasyslide.FantasyDrawerLayout xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/fake" />// this image is part of home scren <com.github.mzule.fantasyslide.SideBar android:id="@+id/leftSideBar" android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/colorPrimary" app:maxTranslationX="66dp"> // This attribute is for curve <!-- SideBar --> </com.github.mzule.fantasyslide.SideBar> 

ЯВА:

 SideBar leftSideBar = (SideBar) findViewById(R.id.leftSideBar); leftSideBar.setFantasyListener(new SimpleFantasyListener() { @Override public boolean onHover(@Nullable View view) { return false; } @Override public boolean onSelect(View view) { return false; } @Override public void onCancel() { } }); 

По моему мнению, для этого вам нужно будет создать собственный собственный класс, расширяющий ViewGroup (или FrameLayout), как в классе DrawerLayout.

EX:

 public class DrawerLayout extends ViewGroup implements DrawerLayoutImpl { /* .. */ } 

В своем пользовательском классе вы можете использовать Canvas и Paint для рисования вашей предпочтительной формы. Вы можете переопределить методы, реализующие его на вашем пути.

Затем вы можете использовать его в своей деятельности:

 MyDrawerLayout drawer = (MyDrawerLayout) findViewById(R.id.my_drawer_layout); 

В вашем файле activity_file.xml:

 <com.yourpackage.MyDrawerLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- .... --> </com.yourpackage.MyDrawerLayout>