Перейти к содержимому

Container

Контейнер - элемент, который может содержать другие элементы. Контейнеры могут быть вложенными друг в друга.

Добавляет элементы в контейнер.

Container add(Element... elements);
Container add(List<Element> elements);
el.add(new Text("Hello, world!"));
el.add(new Element()
.size(50)
.backgroundImage("https://i.imgur.com/91jsciR.jpeg"));

Удаляет все элементы из контейнера.

Container clearChildren();
el.clearChildren();

Устанавливает маску для контейнера. Это изображение, по которому будет обрезано содержимое контейнера. Прозрачные пиксели на изображении будут прозрачными у контейнера.

Container clipMask(String path);
Container clipMask(GraphenResource image);
el.clipMask(Textures.HEART);

NineSlice такое же, как и везде - backgroundImage9Slice.

Container clipMask9Slice(NineSlice slice);
new NineSlice(left, top, right, bottom);
new NineSlice(left, top, right, bottom, scale);
el.clipMask9Slice(new NineSlice(10, 10, 10, 10));
el.clipMask9Slice(new NineSlice(10, 10, 10, 10, 0.5f));

Если установить на true, то в этом контейнере будут храниться все глобальные id дочерних элементов, а также все переменные из выражений в дочерних элементах.

Container contentRoot(boolean value);
el.contentRoot(true);

Устанавливает направление потока элементов. По умолчанию - FlowDirection.ROW.

Container flowDirection(FlowDirection direction);
el.flowDirection(FlowDirection.COLUMN);

Устанавливает перенос элементов во Layout.FLOW. По умолчанию - true для ROW и false для COLUMN.

Container flowWrap(boolean value);
el.flowWrap(false);

Устанавливает расстояние между элементами в контейнере. По умолчанию - 0.

Container gap(float value);
Container gap(String expr);
Container gap(float x, float y);
Container gap(String x, String y);
el.gap(10);
el.gap("10%");
el.gap(10, 0);

Возвращает список дочерних элементов контейнера.

List<Element> getChildren();
List<Element> children = el.getChildren();

Устанавливает лейаут для контейнера. Он определяет, как будут располагаться дочерние элементы внутри контейнера.

  • Layout.FLOW Элементы располагаются в одну строку или колонку. Направление можно переключать с помощью Container.flowDirection. Перенос элементов на новую строку по умолчанию включён для строки, но выключен для колонки.

  • Layout.TEXTERIA Все элементы привязываются к краям контейнера в зависимости от их Element.position.

  • Layout.TABLE Элементы располагаются в виде таблицы. Структура элементов должна быть следующей:

    new Container()
    .layout(Layout.TABLE)
    .add(new Container() // строка заголовка
    // ширина из заголовка будет применена ко всем строкам
    .add(new Text("#").width(30))
    .add(new Text("Имя").width(200))
    )
    .add(new Container() // строки с данными
    .add(new Text("1"))
    .add(new Text("xtrafrancyz"))
    );

По умолчанию: Layout.FLOW

Container layout(Layout layout);
el.layout(Layout.TEXTERIA);

Устанавливает поведение горизонтального скроллбара контейнера.

  • Overflow.VISIBLE Скроллбар не отображается, элементы, выходящие за пределы контейнера, видны.

  • Overflow.HIDDEN Скроллбар не отображается, элементы, выходящие за пределы контейнера, скрываются.

  • Overflow.AUTO Скроллбар отображается только при необходимости, элементы, выходящие за пределы контейнера, скрываются.

  • Overflow.SCROLL Скроллбар отображается всегда, элементы, выходящие за пределы контейнера, скрываются.

По умолчанию: Overflow.VISIBLE

Container overflowX(Overflow overflow);
el.overflowX(Overflow.AUTO);
el.overflowX(Overflow.HIDDEN);

Устанавливает поведение вертикального скроллбара контейнера.

  • Overflow.VISIBLE Скроллбар не отображается, элементы, выходящие за пределы контейнера, видны.

  • Overflow.HIDDEN Скроллбар не отображается, элементы, выходящие за пределы контейнера, скрываются.

  • Overflow.AUTO Скроллбар отображается только при необходимости, элементы, выходящие за пределы контейнера, скрываются.

  • Overflow.SCROLL Скроллбар отображается всегда, элементы, выходящие за пределы контейнера, скрываются.

По умолчанию: Overflow.VISIBLE

Container overflowY(Overflow overflow);
el.overflowY(Overflow.AUTO);
el.overflowY(Overflow.HIDDEN);

Кастомизирует горизонтальный скроллбар. track - это полоса, по которой движется скроллбар, thumb - ползунок. Ширина будет считаться автоматически. Можно использовать картинки и 9Slice для бОльшей красоты.

Container scrollbarX(Element track, Element thumb);
// Стандартный скроллбар
el.scrollbarX(
new Element()
.height(3)
.background(0x88000000),
new Element()
.height(3)
.background(0xFFFFEB3B)
);

Кастомизирует вертикальный скроллбар. track - это полоса, по которой движется скроллбар, thumb - ползунок. Высота будет считаться автоматически. Можно использовать картинки и 9Slice для бОльшей красоты.

Container scrollbarY(Element track, Element thumb);
el.scrollbarY(
new Element()
.width(5)
.background(0x88000000),
new Element()
.width(5)
.backgroundImage(Textures.SCROLL_THUMB)
.backgroundImage9Slice(new NineSlice(3, 3, 3, 3, 0.2f))
);

Устанавливает коллбек, который будет отправлен при нажатии Enter в любом из дочерних элементов с formName или с помощьюю эдита Edit.submit(). Значения всех полей будут собраны и записаны в каллбек по ключу fields. Также будет вызван ивент Trigger.SUBMIT на контейнере.

Container submitCallback(JsonObject callback);
JsonObject callback = new JsonObject();
callback.put("form", "sendMessage");
el.submitCallback(callback);
Заполненный каллбек
{
"form": "sendMessage",
"fields": {
"message": "текст",
"name": "имя"
}
}