Как использовать layoutinflator для добавления просмотров во время выполнения?

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

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, он отлично работает.

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

Ответ 1

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

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

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

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

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

EDIT: разные виды возвращаются в зависимости от параметров. LayoutInflater

Ответ 2

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