- Android ViewGroup
- Android Tutorial
- Kotlin Tutorial
- What is an Android ViewGroup?
- Types of Android ViewGroup
- 1. LinearLayout
- 1.1) Horizontal LinearLayout XML Code
- 1.2) Vertical LinearLayout XML Code
- 1.3) LinearLayout Weights
- 1.4) Nested LinearLayout
- 1.5) Creating LinearLayout Programmatically
- 2. RelativeLayout
- 2.1) Relative to siblings
- 2.2) Creating RelativeLayout Programmatically
- Conclusion
- Русские Блоги
- Android-ViewGroup анализ исходного кода + настройка
- Интеллектуальная рекомендация
- Многослойная презентацияViewController Jap
- Распечатать список с конца до головы
- Типы данных и переменные
- Python Daily Practice (4) -идиомы заполняют музыку
Android ViewGroup
Android Tutorial
Kotlin Tutorial
Android ViewGroup class is used to create the screen views. In this tutorial, we will learn about the ViewGroup and look at some simple examples.
What is an Android ViewGroup?
A ViewGroup is a container to hold views. All the android activities, fragment layouts, etc. are ViewGroups.
The ViewGroup classes are extended from Views. They are used as containers on the android app screen.
Types of Android ViewGroup
Some of the important ViewGroups in Android are:
- LinearLayout
- RelativeLayout
- FrameLayout
- TableLayout
- CoordinatorLayout
- ConstraintLayout
The name of these classes ends with “Layout” because they are used to create different types of layouts.
Let’s look into some examples of ViewGroups in the Android app.
1. LinearLayout
LinearLayout is a ViewGroup that aligns all of its child views in one direction: vertically or horizontally.
The android:orientation attribute is used to set the direction in XML layout.
1.1) Horizontal LinearLayout XML Code
By default the orientation is horizontal and the gravity is left aligned.
1.2) Vertical LinearLayout XML Code
The gravity value end represents right alignment. We can use both the values “right” or “end” interchangeably.
Similarly, for left alignment we can use start too.
The “start” and “end” are the preferred values to ensure that the layout behavior is correct in the right to left locales.
The android:gravity can have either of the following values: left, start, right, end, top, bottom, center, center_horizontal, center_vertical.
The following image shows how right-aligned Vertical LinearLayout looks in the android app screen.
1.3) LinearLayout Weights
LinearLayout allows us to set weights on the child views. This will signify the share of width or height that particular view uses from its parent view.
We have to specify android:weightSum to the LinearLayout and android:layout_weight attribute in the child view.
The following XML layout creates the child’s views with equal width.
- The layout_weight is set on the child views. We have to assign the width as 0dp so that the widths would be automatically calculated using the Layout Weights in LinearLayout.
- Similarly, if the orientation is vertical and Layout weights are specified, we have to specify the layout_height as 0dp . It will be calculated automatically from the layout_weight attribute.
1.4) Nested LinearLayout
The following XML layout shows Nested Layouts, horizontal, and vertical layouts with the layout weights.
We’ve set layout weights on each of the child LinearLayouts. The gravity attribute is used to set the gravity of all the child’s views. The layout_gravity is used to set the gravity of a ChildView relative to the layout.
1.5) Creating LinearLayout Programmatically
We can create the LinearLayout in our Kotlin Activity class.
We can add the buttons in the LinearLayout using addView() function on the instance. It’ll attach the view passed to the end of the layout.
We can pass the index as the second argument in the addView() function to add the child view in a particular position.
Let’s look at the activity_main.xml code in our Android Studio Project.
The following code adds child views in the LinearLayout programmatically in the MainActivity.kt class.
The weightSum property requires a floating value.
For each of the Buttons, we’ve created a LayoutParams instance in which we’ve set the layout_weight using the property weight .
The childCount property gives us the current number of child views present in the LinearLayout.
We’ve set the second button on the top, and the third button at the index one less than child count(3-1=2). Hence it comes up in the middle and the first button is at the bottom.
2. RelativeLayout
RelativeLayout is used to align the views relative to each other as well as relative to its parent view.
The following XML layout creates the RelativeLayout view.
The default position of a RelativeLayout view is top-left.
- layout_centerVertical = true sets the view in the vertical center. By default, it’ll be left aligned.
- layout_centerHorizontal = true sets the view in the horizontal center. By default, it’ll be top aligned.
- layout_centerInParent = true sets the view in the horizontal and vertical center of the parent.
- layout_alignParentEnd/Right = true aligns the view to the right end of the view.
2.1) Relative to siblings
- layout_above = “@+id/sibling_id” is used to set the current child above the sibling.
- layout_below sets it below.
- layout_alignLeft/layout_alignStart = «@+id/sibling_id» aligns the left margins of the current child with the sibling
- layout_alignRight/layout_alignEnd = «@+id/sibling_id» aligns the right margins of the current child with the sibling.
- Similarly alignBottom and alignTop align for the bottom and top respectively.
- android:layout_toEndOf/android:layout_toRightOf = «@+id/sibling_id» puts the child to the right of the sibling.
- android:layout_alignBaseline=»@+id/sibling_id» aligns the bottom baseline.
2.2) Creating RelativeLayout Programmatically
We can set the child views using rules in our Kotlin Activity class.
Following is our activity_main.xml XML layout.
The MainActivity.kt class is setting the relative layout views.
We have to use addRule() method to set the child layout relative to parents and each other.
Conclusion
Android ViewGroup classes are used to create different types of layouts on the screen. We also looked at the most important layout classes and how to create them in XML as well as in the activity code.
Источник
Русские Блоги
Android-ViewGroup анализ исходного кода + настройка
1, Наши первые три блога узнали об основных методах и процессах пользовательского просмотра
Ранее мы только что узнали о настраиваемом представлении. Фактически шаги настраиваемого ViewGroup и настраиваемого View не сильно отличаются. Разница между ними в основном заключается в их соответствующих ролях. ViewGroup — это контейнер, используемый для хранения других элементов управления, а View — это реальный смысл. Это может быть затронуто, это должно нарисовать себя. ViewGroup необходимо переписать метод onMeasure для измерения ширины и высоты дочернего элемента управления и его собственной ширины и высоты, а затем реализовать метод onLayout для размещения дочернего элемента управления. View необходимо переписать onMeasure, чтобы рассчитать его ширину и высоту в соответствии с режимом измерения и рекомендуемыми значениями ширины и высоты, заданными родительским элементом управления, а затем родительский элемент управления рисует свою собственную графику для указанной области.
Но этого недостаточно для понимания пользовательского представления, мы должны узнать о нашей ViewGroup, такой как SlideMenu, CardLayout, CustomLayout и т. Д. Сначала посмотрите на нашу официальную документацию, чтобы описать наши
Теперь мы можем настроить ViewGroup на следующие шаги:
2, Добиться простых горизонтальных результатов
Сначала создайте пользовательскую ViewGroup, чтобы реализовать функцию перевода строки слева направо
Посмотрите на бегущий эффект
3, Настройте параметры LayoutParams для реализации функций layout_alignLeft, layout_alignRight, layout_alignTop, layout_alignBottom объекта RelativeLayout
Напомним, что когда мы обычно используем RelativeLayout, мы используем различные атрибуты, такие как android: layout_alignParentRight = «true», android: layout_centerInParent = «true» в файле макета, чтобы управлять отображением дочерних элементов управления в верхней, нижней, левой и средней частях родительского элемента управления. , В предыдущем блоге о onMeasure мы узнали о классе ViewGroup.LayoutParams. В ViewGroup есть два внутренних класса: ViewGroup.LayoutParams и ViewGroup.MarginLayoutParams. MarginLayoutParams наследуется от LayoutParams. Эти два внутренних класса являются классами параметров макета ViewGroup. Например, layout_width \ layout_hight и другие атрибуты, которые мы используем в LinearLayout и других макетах, начинающихся с «layout_», являются атрибутами макета.
В представлении есть переменная mLayoutParams, чтобы сохранить все свойства макета этого представления. ViewGroup.LayoutParams имеет два свойства layout_width и layout_height, потому что все контейнеры должны устанавливать ширину и высоту дочернего элемента управления, поэтому этот LayoutParams является базовым классом для всех параметров макета, если вам нужно расширить другие свойства, вы должны наследовать от него. Например, RelativeLayout предоставляет собственный класс параметров макета RelativeLayout.LayoutParams и расширяет многие параметры макета.
- Приблизительно уточнить потребности контейнера макета и сначала определить атрибуты макета
Перед определением свойств нам нужно выяснить, что наш контейнер пользовательского макета должен удовлетворить этим потребностям и какие свойства нужны. Например, теперь мы хотим реализовать относительный макет, установив свойство position layout_position = «» для субэлемента управления для субэлемента управления Положение показано на макете. Есть пять предварительных положений: верхний левый, нижний левый, верхний правый, нижний правый и центр. По требованию мы определяем наши собственные атрибуты макета в attr.xml
- Унаследовать LayoutParams, определить класс параметров макета
Мы можем выбрать наследование ViewGroup.LayoutParams, переопределить конструктор, а затем инициализировать значение параметра в конструкторе с параметром AttributeSet. Этот конструктор вызывается, когда файл макета отображается на объект.
- Перезаписать generateLayoutParams ()
В ViewGroup есть следующие методы для LayoutParams: GenerateLayoutParams (AttributeSet attrs) вызывается, когда файл макета заполнен как объект. Этот метод является наиболее важным из следующих методов. Если вы его не переписываете, наш макет Ни один из параметров макета, установленных в файле, не может быть получен.
- Использовать свойства макета в файлах макета
- Используйте параметры макета в onMeasure и onLayout
После описанных выше шагов мы запускаем программу для получения параметров макета дочерних элементов управления.В методах onMeasure и onLayout мы обрабатываем ширину и положение в соответствии с особыми потребностями контейнера пользовательского макета. Здесь мы должны обратить внимание на то, что, если контейнер макета настроен для переноса класса, нам нужно только обеспечить, чтобы самый большой дочерний элемент управления можно было переносить, а комментарии к коду были более подробными, поэтому я не буду много говорить.
Посмотрите на бегущий эффект
4, Поддержка атрибута layout_margin
Если наш пользовательский класс параметров макета наследуется от MarginLayoutParams, он автоматически поддерживает атрибут layout_margin, все, что нам нужно сделать, это использовать атрибут layout_margin непосредственно в файле макета, а затем использовать значение атрибута margin для измерения и размещения дочерних элементов управления в onMeasure и onLayout. , Следует отметить, что мы должны вызывать метод measureChildWithMargin () при измерении дочерних элементов управления.
Мы создаем класс, который наследуется от класса MarginParams
Заменить класс в методе generateLayoutParams ()
onMeasure и onLayout:
Подведите итог нашего учебного контента
Шаги по настройке ViewGroup :
In. Унаследовать ViewGroup и переопределить метод построения
Перепишите метод onMeasure, чтобы измерить ширину и высоту дочернего элемента управления и самого себя.
Imple. Реализуйте метод onLayout для размещения дочерних элементов управления.
Пользовательские атрибуты макета для контейнера макета:
R. Грубо проясните потребности контейнера макета и определите атрибуты макета.
In. Унаследовать LayoutParams, определить класс параметров макета
R. Переписать метод получения параметров макета
Use. Используйте атрибуты макета в файле макета
Use. Используйте параметры макета в onMeasure и onLayout
Перепечатано по адресу: https://www.cnblogs.com/wjtaigwh/p/6605082.html.
Интеллектуальная рекомендация
Многослойная презентацияViewController Jap
. Недавно, проект использует многоэтажные прыжки [A presentViewController: B animated: YES] [B presentViewController: C animated: YES] . Проблема в том, где: как это идет прямо к? Я не нашел ме.
Распечатать список с конца до головы
В случае, когда таблица цепи не может изменять дисплей, данные хранения стека могут рассматриваться с рекурсивным методом. Разрешить модификацию структуры ссылки.
Типы данных и переменные
тип данных Компьютерная программа может обрабатывать различные значения. Однако компьютеры могут обрабатывать гораздо больше, чем числовые значения. Они также могут обрабатывать различные данные, таки.
Python Daily Practice (4) -идиомы заполняют музыку
оглавление 1. Одно место 2. Случайное расположение 3. Добавьте баллы для оценки 4. Получение файла 5. Установите уровень сложности. 6. Срок завершения 7. Выберите заполнение пропусков. 1. Одно место Н.
Источник