2016-12-21 3 views
-1

Я пытаюсь создать звуковое приложение, которое воспроизводит звук всякий раз, когда вы нажимаете на пользовательский вид. Чтобы организовать мой пользовательский интерфейс, я использовал файл макета.В чем преимущества расширения LinearLayout над представлением?

Когда я продлил View, я обнаружил, что когда я попытался раздуть свой макет, это не сработает.

//Didn't work 
View v = View.inflate(context, R.layout.sound_view_layout, null); 

Когда я протянул LinearLayout, однако, он сделал работу.

//Worked 
View v = View.inflate(context, R.layout.sound_view_layout, this); 

Мой вопрос,

как же мне нужно расширить класс Layout для того, чтобы программа работала, и каковы преимущества этого?

ответ

0

Ну, вы можете раздуть только макет. Если вы хотите просто создать представление, используйте new CustomView(context).

Игнорирование того, что основная причина продления макета заключается в том, что вы хотите добавить к нему детей программно или если уже существует коллекция представлений (например, вы можете создать представление CaptionedPhoto с изображением сверху текста. Один из способов сделать это - сделать CaptionedPhoto расширением LinearLayout и сохранить изображение и текстовое представление).

+0

Если вы используете «макет» в том же смысле в обоих местах, то ваше первое предложение на самом деле неверно. Например, [simple_list_item_1] (https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/simple_list_item_1.xml). –

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