пейджерадаптер; добавьте класс LinearLayout, который добавляет макет -> крошечная ширина

У меня есть активность под названием 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 и вывести его на весь экран? (не с крошечной шириной, как сейчас)


comment
Без файлов xml это игра в угадайку. Однако я могу предположить, что класс Report по умолчанию принимает match_parent для высоты. Кажется, вы не передаете какие-либо атрибуты макета в конструкторе.   -  person Joel Bodega    schedule 13.07.2013


Ответы (2)


Когда вы используете addView(View), вы должны указать LinearLayout.LayoutParams родительского представления.

person Frederick Nyawaya    schedule 13.07.2013
comment
Viewpager, который является родителем, уже имеет параметры в файле xml, android:layout_width=fill_parent android:layout_height=fill_parent Само представление, макет, также имеет fill_parents, указанные в файле xml. Мне действительно нужно сделать это снова..? - person Malin; 13.07.2013

По какой-то причине все работало, когда у меня не было изображений, лежащих сами по себе в моем XML-файле просмотра. Я просто поместил каждое изображение в свой собственный линейный макет — и теперь я мог видеть весь макет на весь экран.

Я понятия не имею, почему это было проблемой. Если вы знаете, оставьте комментарий!

person Malin    schedule 15.07.2013