2012-01-14 2 views
2

У меня есть RelativeLayout, определенный в файле макета xml с именем «myview.xml», который содержит несколько под-представлений (TextViews, ImageViews и т. Д.).Лучший способ создать пользовательский класс View из файла макета xml?

Я хочу создать объект/класс View с именем 'MyView', который представляет это RelativeLayout, что позволяет мне изменять свойства под-представлений с использованием методов, которые я буду определять, и чтобы я мог добавлять (и извлекать) экземпляры из MyView программным способом (из) других представлений.

Каков наилучший способ для этого? На данный момент я создаю класс с именем «MyView», который простирается FrameLayout и переопределение FrameLayout в три конструктора я называю следующие методы ...

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.myview, null); 
addView(view); 

... Это работает, но это означает, что все мои RelativeLayouts содержатся в FrameLayouts и, следовательно, у меня есть дополнительный (ненужный) слой в моей иерархии просмотров ...

ответ

2

Я делаю в целом то же самое. Но я отправляю «это», а не «нуль» и не добавляю это представление в родительское представление.

LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
inflater.inflate(R.layout.myview, this); 
+0

благодарит за комментарий Mad Mik. Если я правильно понимаю метод 'inflate', это все равно означает, что у меня есть дополнительный слой в моей иерархии представлений, но я рад узнать, что я не одинок, делая это, как я это делаю, и ваш путь имеет один метод вызова, Иди с этим! :) –

+0

да. вы все равно получаете раздутые взгляды в качестве детей. – madmik3

Смежные вопросы