#android #viewgroup
#Android #viewgroup
Вопрос:
Я искал здесь на SO, в Google, в документах Android…
Но я не могу найти ни одного фрагмента кода с примером пользовательской viewgroup, я нахожу самое большее несколько расплывчатых объяснений…
Может ли кто-нибудь предоставить его? Как создать viewgroup, в которой вы можете размещать ее дочерние элементы там, где вы хотите?
Комментарии:
1. PadLayout — это пользовательская группа просмотра, которая размещает дочерние виды на равном расстоянии.
Ответ №1:
Я думаю, что самый простой пример для рассмотрения — это исходный код AbsoluteLayout .java
Вам нужно переопределить onMeasure для измерения дочерних элементов и onLayout для их позиционирования.
У меня есть поразительно более сложный код ViewGroup, которым я также могу поделиться, если вы хотите.
Комментарии:
1. было бы неплохо, если бы вы могли поделиться… можете ли вы указать функции, которые важно переопределить для дочернего элемента
Ответ №2:
Это не совсем просто, все, что вам нужно сделать, это вызвать super.onMeasure
после вычисления точных размеров вашего представления.
class ProportionalConstraintLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val exactWidth = 100 //do something to calculate the view widht
val exactHeight = 100 //do something to calculate the view height
setMeasuredDimension(exactWidth, exactHeight)
super.onMeasure(
MeasureSpec.makeMeasureSpec(exactWidth, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(exactHeight, MeasureSpec.EXACTLY)
)
}
}