[Из песочницы] Использование библиотеки Android support percent на примере PercentRelativeLayout
Итак, что же нужно для того, чтобы пощупать это счастье? Нужно совсем немного, открыть build.gradle своего приложения, добавить туда строку
dependencies {
compile 'com.android.support:percent:23.4.0'
}
и выполнить синхронизацию.
Всё, все прелести разметки в процентах вам доступны, по крайней мере для minSDK 14 (меньше я не проверял).
Пустой макет у нас будет выглядеть так:
Для указания размеров и положения дочерних элементов мы можем использовать следующие атрибуты
- layout_widthPercent
- layout_heightPercent
- layout_marginPercent
- layout_marginLeftPercent
- layout_marginTopPercent
- layout_marginRightPercent
- layout_marginBottomPercent
- layout_marginStartPercent
- layout_marginEndPercent
- layout_aspectRatio
При этом нужно указывать префикс не android: layout_widthPercent, а app: layout_widthPercent, в соответствии с указанным в заголовке макета пространством имен. Значения этим атрибутам назначаются в процентах, с обязательным указанием знака %.
Собственно назначение почти всех атрибутов интуитивно понятно, ширина, высота и отступы в процентах от родительского макета.
Уточнить стоит пожалуй только layout_aspectRatio. Этот атрибут даёт вам возможность задавать соотношение сторон элемента. Например, вы хотите создать квадратную кнопку, которая занимает 15% от ширины экрана. Вы указываете layout_widthPercent = »15%», если вы укажете layout_heightPercent = »15%» то кнопка у вас получится прямоугольная. Поэтому, нужно layout_heightPercent не указывать, а указать layout_aspectRatio = »100%». В этом случае ширина будет вычисляться по формуле: layout_heightPercent * layout_aspectRatio /100.
Еще может возникнуть вопрос, чем layout_marginStartPercent отличается от layout_marginLeftPercent, и layout_marginEndPercent от layout_marginRightPercent соответственно? Тут все просто, это для обеспечения локализации интерфейса, для тех языков, которые читаются слева на право, Start = Left, а для тех которые справа налево Start = Right.
PercentRelativeLayout является наследником RelativeLayout, поэтому наряду с Percent-атрибутами, вы можете использовать атрибуты RelativeLayout, например можно указать высоту кнопки как android: layout_height=«wrap_content», а ширину app: layout_heightPercent = »25%».
Конечно PercentRelativeLayout не является панацеей, например при переворачивании экрана могут получатся интересные, и не приятные спецэффекты. Поэкспериментируйте сами, а я для себя сделал вывод, что при использовании PercentRelativeLayout, обязательно нужно делать Landscape версию макета.
Комментарии (1)
20 августа 2016 в 14:25
0↑
↓
Его удобно с RecyclerView использовать. Например, если нужно, чтобы скролилось горизонтально, а на весь экран помещались 2 квадратные ячейки за раз, просто ставишь для RecyclerViewapp:layout_widthPercent="100%" app:layout_aspectRatio="200%"
И для CardView:app:layout_aspectRatio="100%" app:layout_heightPercent="100%"