DroidScript

Компоновщик

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript
инструменты для мобильной разработки

Компоновщик

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
Оглавление 
Дата изменения 01.01.2017

Компоновщики (также называемые макетами или контейнерами) Layouts используются для управления отображения элементов заданным образом, а также в качестве графических объектов и элементов управления. Создание компоновщика происходит c помощью конструктора CreateLayout:

app.CreateLayout( (str) type, [(str)] options )

Конструктор имеет два параметра: type - тип компоновки - является обязательным, options - опции - необязательный. Если опции не указаны, то создаётся компоновщик с опциями по умолчанию.

Параметры:

type:

options:

Тип компоновки linear используется чаще всего, поскольку задаёт относительное расположение и выравнивание элементов встык без наложения. Опции расположения и выравнивания элементов. работают только в компоновщиках этого типа.

Тип absolute используется для абсолютного расположения элементов с помощью метода SetPosition. Более того, позиционировать элементы с помощью метода SetPosition можно только при компоновке absolute или frame. В компоновщике linear он не работает. Абсолютная компоновка позволяет делать макеты с перекрывающимися элементами, что, например, можно использовать для расположения полноэкранных слоёв друг над другом для увеличения функциональности интерфейса.

Тип frame используется для отображения одного элемента из нескольких добавленных в него. То есть, при каждом вызове метода AddChild для него на экране будет отображаться только добавляемый элемент, а все остальные скрыты. После создания всех элементов управлять их видимостью можно путём использования их методов Show, Hide, Gone и SetVisibility.

В примере ниже вы можете поэкспериментировать с типами и опциями вложенного компоновщика _layInner, изменяя параметры конструктора.

Базовый пример

Выполнить в DS

У компоновщика нет метода получения его элементов. Их можно получить путём перебора объектов ассоциативного массива, возвращённого методом app.GetObjects(), у которых порядковый номер, возвращенный методом GetChildOrder( child ), не равен -1.

Выполнить в DS

Список дочерних элементов можно организовать и при помощи ассоциативного массива, добавленного компоновщику:

layout.children = [];
layout.children[ 'obj1' ] = obj1;
layout.children[ 'obj2' ] = obj2;
layout.children[ 'obj3' ] = obj3;

Такое решение обладает меньшей гибкостью, но позволяет ускорить работу с дочерними объектами по сравнению с вызовами относительно медленных методов API DroidScript.

Преимущество ассоциативного масива состоит в большей универсальности. Во-первых, можно быстро получить объект по его имени, во-вторых, можно быстро получить список имён объектов с помощью метода корневого объекта keys:

Object.keys( array );

После создания компоновщика изменить его тип или опции нельзя. Это также справедливо для ряда других объектов в DroidScript: в одних случаях можно изменить часть или все свойства, заданные объекту при его создании, а в других - нельзя. В последнем случае необходимо пересоздавать объекты заново.

Методы:

Оглавление