0

我有一个名为 CollectionActivity 的活动,带有一个 viewpager。viewpager 拥有它自己的适配器,PagerAdapter:CollectionPagerAdapter 扩展了 PagerAdapter。

重要的 instantiateItem 方法:

@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 获得的视图在屏幕上显示的宽度非常小。然而,它下面的 Button 获得了它需要的宽度。

activity_report.xml 具有填充父级的宽度和高度,并以填充文本框、按钮和其他内容的水平布局开始。Activity_report.xml 在 Eclipse 的预览中看起来很棒,并且在我之前将它用于活动时看起来很好。

为什么我不能使用 this.addView(view) 添加我的布局 activity_report.xml 并将其显示在整个屏幕上?(不像现在这样窄)

4

2 回答 2

0

当您使用 addView(View) 时,您必须指定父视图的 LinearLayout.LayoutParams。

于 2013-07-13T16:52:53.507 回答
0

出于某种原因,当我的视图 xml 文件中没有单独存在的图像时,一切正常。我只是将每个图像放在它们自己的线性布局中——现在我可以在整个屏幕上看到整个布局。

我不知道为什么这是这个问题。如果您知道,请发表评论!

于 2013-07-15T10:54:02.130 回答