У меня есть активность под названием CollectionActivity с просмотрщиком. Viewpager имеет собственный адаптер, PagerAdapter: CollectionPagerAdapter расширяет PagerAdapter.
Важный метод instanceItem:
@Override
public Object instantiateItem(View collection, int position) {
LinearLayout lay = null;
if(position==0){
lay = new Report(context);
lay.setOrientation(LinearLayout.VERTICAL);
((ViewPager) collection).addView(lay);
}
//else for the other positions...
return lay;
}
Конструктор в классе Report (расширяет LinearLayout) выглядит так:
public Report(Context context) {
super(context);
this.context = context;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.activity_report, null);
this.addView(view);
Button button = new Button(context);
button.setText("LinearLayoutExtended");
this.addView(button);
Проблема; представление, которое я получаю от R.layout.activity_report, отображается с очень маленькой шириной на экране. Кнопка ниже, однако, получает необходимую ширину.
Activity_report.xml имеет ширину и высоту родителя заполнения и начинается с горизонтального макета, заполненного текстовыми полями, кнопками и другими элементами. Activity_report.xml отлично выглядит в предварительном просмотре в eclipse и выглядел хорошо, когда я использовал его для активности раньше.
Почему я не могу использовать this.addView(view), чтобы добавить свой макет activity_report.xml и вывести его на весь экран? (не с крошечной шириной, как сейчас)
match_parent
для высоты. Кажется, вы не передаете какие-либо атрибуты макета в конструкторе. - person Joel Bodega   schedule 13.07.2013