Прежде всего мой опыт: я новичок в Java, пришедший из Ruby. Если это поможет.
Я не понимаю, как работают параметры макета. Я следую основному введению Hello World при создании приложения для Android. Шаг 1, расширьте класс Activity и метод onCreate () для доступа к макету XML. Хорошо, я понял.
Затем я создаю макет (скажем, RelativeLayout) в Main.XML. Так что здесь используется класс RelativeLayout, который расширяет класс ViewGroup. Тогда скажем, я создаю кнопку внутри этого. Здесь начинается мой вопрос. Если посмотреть на пример, которому я следую, я увижу атрибуты, назначенные кнопке, принадлежащей классу RelativeLayout (то есть: android: layout_alignParentRight = "true"). Похоже, это параметры макета. Но почему это работает? Класс кнопки, кажется, наследуется от класса View. Почему объект кнопки может принимать атрибуты для объекта RelativeLayout? Может быть, мое программирование на Ruby сбивает меня с толку ..
Спасибо!
Обновление: ради потомков: спасибо Slothsberry за указание на ссылку XML Layouts , которая, по-видимому, четко описывает ответ в 2-х разделах раздела «Атрибуты» и «Параметры макета». Раздел атрибутов гласит:
Каждый объект View и ViewGroup поддерживает свои собственные разновидности XML
атрибутов. Некоторые атрибуты относятся к объекту View (для
Например, TextView поддерживает атрибут textSize), но они
атрибуты также наследуются любыми объектами View, которые могут расширять это
учебный класс. Некоторые являются общими для всех объектов View, потому что они наследуются
из корневого класса View (как атрибут id). И другие
атрибуты считаются «параметрами макета», которые являются атрибутами
которые описывают определенные ориентации макета объекта View, как
определяется родительским объектом ViewGroup этого объекта.
Раздел параметров макета, возможно, является разделом, который действительно отвечает на этот вопрос. Где говорится:
Каждый класс ViewGroup реализует вложенный класс, который расширяет
ViewGroup.LayoutParams. Этот подкласс содержит типы свойств, которые
определить размер и положение для каждого дочернего представления, в зависимости от
группа просмотра. Как видно на рисунке 1, родительская группа представления
определяет параметры макета для каждого дочернего представления (включая дочернее представление
просмотр группы).
Они также дают хорошую диаграмму. Кажется, что начинающий программист должен признать, что, хотя на Java-классы ссылаются, XML действует больше как лист CSS, и что атрибуты сначала вычисляются во вложенном виде, а затем вычисляются и переносятся на их аналоги класса Java. В любом случае, это мое понимание:)