Дополнительные элементы разметки
Общая информация
В библиотеке декларативного программирования DePro имеется три типа дополнительных элементов разметки. Первый тип – это классы, которые ориентированы на работу с компонентами библиотеки и которым нет аналогов в известных библиотеках андроида. Второй тип также ориентирован на работу с компонентами, но они наследуются от известных классов. Третий тип это классы, которые не связаны с компонентами, а предназначены для расширения функционала существующих классов.
Все дополнительные элементы разметки имплементят интерфейс IComponent. Те дополнительные элементы, которые имеют функцию проверки валидации дополнительно имплементят интерфейс IValidate.
Расширенный функционал элементов задается с помощью атрибутов.
Можно использовать и кастомные элементы. При необходимости взаимодействия с библиотекой нужно либо наследовать их от имеющихся в библиотеке классов, либо использовать интерфейсы IComponent, IValidate. Более подробно о разработке собственных элементов для использования с библиотекой описано ниже.
Calendar
Наследуется от RelativeLayout.
Предназеачен для задания (выбора) дат.
Визуально DateDiapason представляет собой календарь.
Используются атрибуты в разметке:
- viewDateId - задает id элемента класса TextView в котором будет отображаться выбранная дата. Может отсутствовать
- formatDate - задает формат отображения дат в поле viewDateId. Формат задается по правилам класса SimpleDateFormat
- countMonthLeft - задает количество месяцев, которые будут доступны для просмотра слева от текущего месяца.
- countMonthRight - задает количество месяцев, которые будут доступны для просмотра справа от текущего месяца.
- colorSelectTint - задает цвет фона для выбранной даты.
- colorCurrentTint - задает цвет фона для текущей даты.
- workDay - правило установки рабочих дней. Может принимать значения: last - прошлые даты (относительно текущей); next - будущие даты; all - все даты.
- colorWeekday - задает цвет текста суббот и воскресений.
- colorWorkDay - задает цвет текста рабочих дней.
- colorNoWorkDay - задает цвет текста не рабочих дней. Нерабочие дни нельзя выбрать.
Пример использования приведен в уроке 8.
DateDiapason
Наследуется от RelativeLayout.
Предназеачен для выбора диапазона дат ("С" - "ПО").
Визуально DateDiapason представляет собой календарь. В исходном состоянии он, как правило, не виден (атрибут visibility="gone").
Используются атрибуты в разметке:
- viewFrom - указывает id элемента класса TextView в котором будет отображаться дата "С".
- viewBefore - указывает id элемента класса TextView в котором будет отображаться дата "ПО".
- formatDate - задает формат отображения дат в полях viewFrom и viewBefore. Формат задается по правилам класса SimpleDateFormat
- countMonthLeft - задает количество месяцев, которые будут доступны для просмотра слева от текущего месяца.
- countMonthRight - задает количество месяцев, которые будут доступны для просмотра справа от текущего месяца.
- textOk - текст который будет показан на кнопке оК. Если не задан, то будет текст "оК".
- textCancel - текст который будет показан на кнопке Cancel. Если не задан, то будет текст "Cancel".
- colorSelectTint - задает цвет фона для выбранной даты.
- colorCurrentTint - задает цвет фона для текущей даты.
- workDay - правило установки рабочих дней. Может принимать значения: last - прошлые даты (относительно текущей); next - будущие даты; all - все даты.
- colorWeekday - задает цвет текста суббот и воскресений.
- colorWorkDay - задает цвет текста рабочих дней.
- colorNoWorkDay - задает цвет текста не рабочих дней. Нерабочие дни нельзя выбрать.
Пример использования приведен в уроке 7.
DrumPicker
Наследуется от View implements IComponent, IAlias.
Предназеачен для выбора элемента в списке.
В данных для связывания DrumPicker должно соответствовать поле типа TYPE_LIST_FIELD (List<Field>). Каждый Field содержит строку с текстом. Возвращает значение выбранной строки.
Используются атрибуты в разметке:
- textSize - задает размер текста.
- minTextSize - задает минимальный размер текста. Используется если необходимо чтобы не выделенные элементы показывались с меньши шрифтом. Размер отображения уменьшается плавно по мере удаления элемента от выделенного.
- minAlpha - задает минимальное значение прозрачности текста.
- sideLimit - задает количество элементов, которые будут показываться выш (ниже) выбранного.
- align - указывает выравнивание текста по горизонтали. Принимает значения: left, center, right.
- selectColor - цвет текста.
- loopMode - если нужно что бы элементы списка были закольцованы (после моследнего идет первый) то атрибут должен иметь значение true.
- dataArray - задает данные в виде массва строк. Если осуществляется связывание данных, то dataArray не учитывается.
- beginValue и endValue - если данные должны формироваться автоматически от minValue до maxValue включительно. Если задан атрибут dataArray, то beginValue и endValue не учитываются
- alias - алиас.
Пример использования приведен в уроке 8.
ComponEditText
Наследуется от AppCompatEditText implements IComponent, IValidate.
В дополнение к функциям AppCompatEditText ComponEditText позволяет осуществлять валидацию введенной информации. Для подключения этого функционала используются атрибуты в разметке:
- typeValidate - задает тип проверки. Предусмотрены следующие типы: filled - не пустой, email - корректный адрес.
- textError - задает текст сообщения об ошибке.
- minValue - минимальное значение.
- maxValue - максимальное значение.
- onlyLetters - содержит только буквы и пробелы. Проверка в соответствии с регулярным выражением "[a-zA-ZёЁїЇіІ а-яА-Я-]+".
- fieldLength - длина поля должна быть равна (строго) значению атрибута.
- idClean - id элемента разметки при клике на который содержимое поля очищается (принимает значение "")
- idShowPassword - id элемента разметки при клике на который показывется значение пароля. Если указан атрибут, то свойству InputType автоматически устанавливается значение textPassword
- idHidePassword - id элемента разметки при клике на который скрывается значение пароля. Если указан атрибут, то свойству InputType автоматически устанавливается значение textPassword.
- equalsId - id элемента со значением которого должно совпадать значение данного поля.
- validPassword - задает условия проверки пароля в виде строки. Значениями этой строки могут быть только литеры "a", "A", "0", "@". Если в строке имеется символ "a" значит в пароле должна быть хотябы одна маленькая буква, если "A" - то хотябы одна большая, если "0" - то хотябы одна цифра, "@" - то хотябы один символ (коды ASCII от 32 до 47).
- alias - алиас.
Если ComponEditText включен в TextInputLayout, то сообщение об ошибке будет выдаваться через TextInputLayout при потере фокуса и при клике на поля для которых данный элемент находится в списке mustValid.
Пример использования приведен в уроке 5.
EditTextMask
Наследуется от AppCompatEditText implements IComponent, IValidate.
Хорошо использовать для форматированного ввода номера телефона.
В дополнение к функциям AppCompatEditText EditTextMask позволяет осуществлять ввод в соответствии с маской. Для подключения этого функционала используются атрибуты в разметке:
- mask - маска ввода. Задается в виде последовательности символов. Символ “_” (подчеркивание) указывает, что на его месте должна стоять цифра, символ “А” (буква А) указывает, что на этом месте должна находиться буква. Остальные символы отображаются как есть. Например, для ввода номера телефона используется маска: “+380 __ ___ ____”.
- textError - задает текст сообщения об ошибке.
- alias - алиас.
Если EditTextMask включен в TextInputLayout, то сообщение об ошибке будет выдаваться через TextInputLayout при потере фокуса и при клике на поля для которых данный элемент находится в списке mustValid.
Пример использования приведен в уроке 5.
Ellipsis
Ellipsis представляет собой несколько точек равномерно распределенных по горизонтали или вертикали. Наследуется от LinearLayout, поэтому ориентацию точек можно задавать атрибутом "android:orientation". Атрибуты:
- amountDots – количество точек;
- colorDot - цвет точек;
- diametrDot – диаметр точек.
Gallery
Служит для отображения перечня картинок. В некоторых приложениях называется "карусель".
Наследуется от ViewPager implements IComponent.
В данных для связывания галерее должно соответствовать поле типа TYPE_LIST_FIELD (List<Field>). Каждый Field содержит строку с URL картинки. Картинки показываются пакетом Glide.
В XML разметке используются атрибуты:
- placeholder - задает изображение, которое показывается пока грузится изображение из источника данных.
- indicator - указывает id элемента PagerIndicator, который должен размещаться в одном лайоуте с галереей.
- alias - алиас.
Связывание данных осуществляется обычным способом.
Пример использования приведен в уроках 2 и 4.
ComponList
Применяется для отображения небольших списков данных (вместо RecyclerView) в ScrollView.
В данных для связывания компоненту должно соответствовать поле типа TYPE_LIST_RECORD.
Атрибуты:
- evenColor - цвет фона четных элементов, если нужно их выделять;
- itemLayoutId - id лайоута с разметкой элемента.
Связывание данных осуществляется обычным способом.
Пример использования приведен в уроке 2.
ComponMenuB
Горизонтальное меню (как правило, располагается в низу экрана. Но можно размещать в любом месте. Используется компонентом menuBottom
Атрибуты:
- normColor - цвет обычного элемента (иконки и текста);
- selectColor - цвет выделеного элемента (иконки и текста);
- selectBackground - дравабле фона выделенного элемента, если нужно;
- noSelImgChangeColor = true, если цвет иконки менять не нужно. Значение по умолчанию - false;
- toAnimate = false, если не нужно увеличивать (с анимацией) иконку и текст выделенного пункта. Значение по умолчанию - true;
- imageLocale - задает положение иконки по отншению текста. Принимает значения: left, top, right, bottom.
Если normColor не указан то будет драться цвет colorAccent с темы. Если selectColor не указан то будет драться цвет colorAccentDark с темы.
Пример использования приведен в уроке 1.
PagerIndicator
Применяется для индикации позиции в таких элементах как ViewPager, Gallery.
Представляет собой множество точек (кружков, меток). Точка соответствующая выбранному элементу отличается от остальных цветом. НУЖНО устанавливать следующие атрибуты:
- diametrItem - диаметр точек в dp.
- itemId - дравабле обычных точек.
- itemSelectId - дравабле выбранной точки.
Пример использования приведен в уроках 2, 4, 5.
SeekBarRange
SeekBarRange – слайдер. В отличие от стандартного SeekBar имеет два ползунка и позволяет задавать минимальное и максимальное значения. Атрибуты:
- thumbImg – изображение ползунков. Может быть как иконкой так и shape;
- thumbDiam – диаметр ползунков (высота и ширина);
- barHeight – высота полоски;
- barColor - цвет полоски;
- betweenColor - цвет полоски между ползунками;
- barRoundedCorners - если true, то концы полоски закругленные;
- sliderViewInfo - view, которая будет появляться при нажатии на любой ползунок и будет перемещаться вместе с ползунком. Удобно его делать на основе TextView, в этом случае в нем будет отображаться значение ползунка. В качестве фона можно использовать изображение или shape. Если будет использоваться лайоут, то значение ползунка будет отображаться в его первом TextView. При отсутствии TextView значение никуда не выводится;
- barDrawable - shape для фона полоски, если нужна своя раскраска;
- minV - минимальное значение;
- maxV - максимальное значение;
- minStart - начальное минимальное значение;
- maxStart - начальное максимальное значение;
- singleThumb - только один ползунок;
- showMaxId - id элемента куда будет заноситься максимальное значение;
- showMinId - id элемента куда будет заноситься минимальное значение;
- showMinMaxId - id элемента куда будет заноситься минимальное и максимальное значения разделенные знаком "-".
Для showMaxId, showMinId и showMinMaxId можно использовать элемент разметки TextViewNumberGrammar.
Пример использования приведен в уроке 11.
SheetBottom
Представляет собой всплывающую снизу панель - контейнер. Поведение стандартное для всплывающих панелей. Атрибуты:
- viewId - id лайоута содержащему разметку, которая будет показана во всплывающей панели (заносится в контейнер).
- negativeViewId - id элемента (в viewId) по клику на который будет закрыта панель.
- showTime - если задано, то панель закроется сама через количество милисекунд заданых в атрибуте.
- fadedScreenColor - цвет фона.
- viewMatch - если = true, то выдвижная панель будет на весь экран по высоте (MATCH_PARENT), иначе высота определяется по содержимому (WRAP_CONTENT).
- noSwipeHide - если = true, то fadedScreen - прозрачный и доступны для клика все элементы под ним. Свайп для закрытия панели не работает. Закрывать только по обработчику навигатора HIDE
- noBackPressedHide - если = true, то по кнопке BackPressed и обработчику BACK панель не закрывается.
Пример использования приведен в уроках 1, 3, 7.
ComponSwitch
Представляет собой переключатель. Наследуется от SwitchCompat implements ISwitch.
Используется компонентом switchComponent. Вместо SwitchCompat можно использовать любой переключатель нужно только реализовать интерфейс ISwitch
ComponTextView
Наследуется от AppCompatTextView implements IComponent.
В дополнение к функциям AppCompatTextView ComponTextView позволяет форматировать данные. Для подключения этого функционала используются атрибуты в разметке:
- numberFormat - задается строка формата (в соответствии с правилами формата для класса DecimalFormat). Данные для связываия должны иметь тип TYPE_FLOAT или TYPE_DOUBLE.
- moneyFormat - в ряде приложений для работы с деньгами используются целые числа которые соответствуют суммам в копейках (центах, пенсах, евроцентах, ...). Перед форматированием данные делятся на 100. Формат как для numberFormat. Данные для связываия должны иметь тип TYPE_INTEGER или TYPE_LONG.
- dateFormat - задается строка формата дат (в соответствии с правилами формата для класса SimpleDateFormat). Данные для связываия должны иметь тип TYPE_LONG.
- dateMilisec - если данные о дате заданы с точностью до милисекунд то указывается true. Если с точностью до секунд - false. По умолчанию принимает значение true.
- alias - алиас.
Связывание данных осуществляется обычным способом.
Пример использования приведен в уроках 3, 6 и 7.