Подтвердить что ты не робот

Может ли кто-нибудь дать хороший пример пользовательской группы просмотра, содержащей пользовательский вид с примерами мер и макетов? (На Java)

У меня возникло несколько проблем с использованием настраиваемых групп представлений и пользовательских представлений. Я уже много сделал для этого, но если я пропустил что-то, не стесняйтесь связывать меня там. Да, я прочитал все о просмотрах, просмотрах групп, мерах и макетах на веб-сайте Android, но я все еще запутался без кода примера Java.

1) Мое понимание заключается в том, что для представления детей необходимо реализовать onMeasure и onLayout. Означает ли это, что родительской ViewGroup необходимо вручную вызывать меры() и layout() для каждого из своих детей? Если да, где должны быть эти вызовы? Должны ли они быть в методах Parent onMeasure и onLayout? Если да, то где самые первые вызовы measure() и layout(), которые запускают весь этот рекурсивный процесс.

2) Я вижу, что параметры макета childview могут быть установлены с использованием следующего. Должен ли этот код размещаться внутри onLayout родительской группы просмотра?

CustomView cust = new CustomView(context);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
cust.setLayoutParams(params);

Если я хочу установить MeasureSpec, просто добавлю его в качестве другого правила здесь?

3) Можно ли создать экземпляр CustomView и добавить его в CustomViewGroup из кода для CustomViewGroup, и если это так, я должен поместить этот код в конструктор CustomViewGroup? Если нет, понимаете ли вы, что вы создаете ViewGroups, а затем добавляете все дети из другого внешнего класса?

4) Обычна ли практика вызывать draw() для каждого из моих дочерних объектов внутри метода onDraw() для CustomViewGroup?

Прямо сейчас, когда я выполняю код для рисования круга, он выполняет метод рисования, но на экране ничего не появляется. Когда я добавляю его в relativeLayout вместо моей customViewGroup, у меня нет проблем... Поэтому я думаю, что мне не хватает ключевого момента о том, как получить группы представлений. (Да, я установил ContentView в ViewGroup).

Спасибо заранее!

Изменить: Пожалуйста, не показывайте мне XML, я делаю все это на Java.

4b9b3361

Ответ 1

Я рекомендую вам прочитать эти слайды и посмотреть этот видео.