Как использовать layoutinflator для добавления представлений во время выполнения? - PullRequest
10 голосов
/ 19 января 2011

У меня есть два макета: main.xml и buttonpanel.xml.В buttonpanel.xml, в основном линейном разметке, я установил гравитацию внизу.Теперь я пытаюсь добавить макет панели кнопок, используя следующий код.

setContentView(R.layout.main);
LinearLayout layout=(LinearLayout)findViewById(R.id.mainlinearlayout);
LayoutInflater inflater= (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view=inflater.inflate(R.layout.buttonpanel,null);
layout.addView(view);

Моя проблема заключается в том, что панель добавляется сверху, хотя в buttonpanel.xml я установил гравитацию снизу.Если я добавлю buttonpanel.xml в main.xml, используя include, он будет работать нормально.

Кто-нибудь может мне помочь, что не так с моим кодом?

Ответы [ 2 ]

17 голосов
/ 19 января 2011

У меня были проблемы с удалением параметров компоновки при раздутии представлений так, как вы это делаете. Если я использую немного другой вызов inflate, мои параметры макета будут соблюдены:

parent_view = inflater.inflate(R.layout.buttonpanel, parent);

Или в моем случае, когда родитель не поддерживал добавление к нему представлений:

view = inflater.inflate(R.layout.buttonpanel, parent, false);

Возможно, это решит и вашу проблему.

РЕДАКТИРОВАТЬ: различные представления возвращаются в зависимости от заданных параметров. LayoutInflater

0 голосов
/ 19 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...