FlexboxLayout — частина 2

У цій частині ми розглянемо атрибути для дочірніх уявлень, які відповідають за позиціонування всередині батьківських елементів.
У попередній статті ми побачили, що у FlexboxLayout є ряд атрибутів, які управляють розміром і розташуванням дочірніх елементів, але це ще не все. Всі менеджери макетів в Андроїді застосовують до дочірніх елементів власні параметри макета (LayoutParams), які надають цим вкладених елементів специфічні атрибути. FlexboxLayout в цьому плані не виняток. Більш того, саме в дочірніх атрибутах розкривається вся міць цього макета.
Перш ніж зануритися в нетрі теорії, варто згадати, що в моєму додатку ці дочірні атрибути можна побачити в режимі елемента, увійшовши в нього довгим натисканням на вкладений елемент. Будучи в режимі елемента, можна натисканням виділяти інші дочірні елементи, а потім налаштовувати значення атрибутів для виділених елементів.
layout_order
Цей атрибут контролює стан внутрішнього елемента всередині батьків. За замовчуванням усі елементи отримують значення 1 і розташовуються в порядку оголошення в XML-файлі (якщо вони були оголошені там) або в коді. Я не став додавати цей атрибут в додаток — він досить очевидний.
layout_flexGrow
Працює аналогічно терезам LinearLayout — місце, що залишилося в батьківському елементі буде розподілено пропорційно значенням layout_flexGrow у дочірніх елементів. Значення за замовчуванням 0.0 не буде змінювати розмір цього елемента.
layout_flexGrow
layout_flexGrow
layout_flexShrink
Повна протилежність попереднього елемента. Використовується разом з flexWrap="no_wrap". У тому випадку, коли сумарний розмір усіх дочірніх елементів більше розміру контейнера, їх розмір буде зменшено пропорційно значенню цього атрибута. За замовчуванням використовується значення 1.0, тобто всі елементи будуть зменшуватися однаково. Встановивши значення 0.0, можна заборонити зменшення конкретного елемента.
ilayout_flexShrink
layout_flexShrink
alignSelf
минулого разу ми розглянули злегка заплутані атрибути контейнера alignItems і alignContent, які управляють як розташуванням самих елементів, так і віртуальними смугами, у яких вони знаходяться. Тепер з'явився ще один атрибут layout_alignSelf, який застосовується до дочірніх елементів і дозволяє перевизначити значення alignItem контейнера. Значення за замовчуванням — auto, тобто елемент успадковує значення контейнера, але його можна змінити на одне із значень flex_start, flex_end, center, baseline або stretch.
flex_start
alignSelf="flex_start"
flex_end
alignSelf="flex_end"
center
alignSelf="center"
baseline
alignSelf="baseline"
stretch
alignSelf="stretch"
layout_flexBasisPercent
І останній атрибут, який дозволяє задати поведінку, аналогічне PercentLayout. Значення за замовчуванням -1.0 не буде задавати розмір елемента у відсотках, а значення 0.0 1.0 встановить розмір елемента щодо розміру контейнера (при значенні 1.0 дочірній елемент займе весь простір).
layout_flexBasisPercent
layout_flexBasisPercent="0.5"
На цьому з атрибутами покінчено. Заключна частина статті буде свого роду готовим рецептом, в якому ми подивимося, як можна скомбінувати батьківські і дочірні атрибути, вирішуючи реальну задачу.


Від перекладача: що стаття вийшла коротка і простенька (який сенс був розбивати її на 2 частини?). Написав йому в блозі, що тема продуктивності не розкрита, сподіваюся, відреагує.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.