Это выглядит как неправильный подход, но я все равно спрашиваю.
Задача заключается в том, что у вас есть макет XML, который описывает составной виджет (например, Button
+ TextView
). Вы хотели бы сделать его многократно используемым, поэтому вы создаете класс, подобный MyTextViewButtonWidget
- он будет отображать свои текстовые средства доступа к кнопкам и то же самое будет делать для просмотра текста:
public class MyTextViewButtonWidget extends LinearLayout {
...
void setButtonText(String text) { ... }
String getButtonText() { ... }
void setTextViewText(String text) { ... }
String getTextViewText() { ... }
...
}
Определение макета выглядит следующим образом:
<LinearLayout ..........>
....button and text label here...
</LinearLayout>
Вопрос - как бы вы загрузили этот макет так, чтобы его корень LinearLayout
был бы LinearLayout
частью MyTextViewButtonWidget
?
Попробовал определить ctor MyTextViewButtonWidget
вот так:
{
inflate(getContext(), R.layout.reusable_widget_layout, this);
}
Но это загружает reusable_widget_layout
как ребенка до MyTextViewButtonWidget
(это не то, что мне нужно).
Как правило, проблема:
- Вам нужно создать составной виджет
- Вы хотели бы иметь возможность определить его макет с помощью разметки xml
- Вы хотите, чтобы он загружал дочерние виджеты root, определенные в xml, как его дочерние виджеты (INSTEAD OF: загружать всю иерархию из xml как один дочерний элемент вашего повторно используемого виджета)