【问题标题】:Which way should I choose to inflate view in ViewPager's instantiateItem method?我应该选择哪种方式在 ViewPager instantiateItem 方法中膨胀视图?
【发布时间】:2013-07-16 02:35:38
【问题描述】:

我使用 ViewPager 编写了一个 Android 应用程序。现在,我在使用 ViewPager 时感到困惑。 当我使用下面的代码从布局 xml 文件中扩充视图并将其添加到 viewpager 中时。

public Object instantiateItem(ViewGroup container, int position) {
     View view = View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, null);
     container.addView(view);
     return view;
}

但是当我使用下面的代码时,viewpager 什么都不会显示。

public Object instantiateItem(ViewGroup container, int position) {    
     View view = View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, container);
     return view;
}

我认为这两个 sn-ps 做同样的事情,但结果不同。我不知道为什么。谁能帮我 ?谢谢!

【问题讨论】:

    标签: android android-viewpager inflate


    【解决方案1】:

    实际上,这些 sn-ps 做的事情略有不同:

    1. 膨胀视图并将其添加到容器中;
    2. 只是放大视图;

    这里的问题如下:

    View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, container); 的调用等于以下一个:LayoutInflater.from(ShareTasksActivity.this).inflate(R.layout.item_internal_advertisement, container, false);(结帐its source)。同时instantiateItem() documentation提到:

    适配器负责将视图添加到给定的容器中 这里

    因此,第二个变体根本不起作用,因为它没有向容器添加视图。

    但是,根据我的理解,第一个变体也有一个问题:如果您提供 null 父视图,则不会应用您可能为顶级视图提供的布局参数 R.layout.item_internal_advertisement

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多