当前位置: 首页 > 知识库问答 >
问题:

当涉及到屏幕时,如何影响ViewPager中的项目

晋西岭
2023-03-14

我正在构建一个画廊应用程序。我的主要活动中有一个扩展PagerAdapter的内部类:

private class ImagePagerAdapter extends PagerAdapter{

    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        LinearLayout llImage = (LinearLayout) getLayoutInflater().inflate(R.layout.view_pager_item, null);

        SubsamplingScaleImageView draweeView = (SubsamplingScaleImageView) llImage.getChildAt(0);
        draweeView.setImage(ImageSource.uri(images.get(position)));

        container.addView(llImage, 0);

        return llImage;

    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((LinearLayout) object);
    }
}

项是动态创建的。我的应用允许用户在这些页面(项目)中缩放图片,并且当我轻扫到下一页时,ViewPager 会保存缩放状态。但是当我返回到上一页时,我希望看到默认大小的图片,而无需任何更改。

考虑到存储的项目是动态创建的,当它们再次出现在屏幕上时,我该如何影响这些项目?

共有1个答案

萧树
2023-03-14

你在这里弄错了什么。请考虑以下事项:

如果你的浏览页面中有三个页面,当你的应用程序出现在屏幕上时,第一页和第二页将被初始化。当您滑动到第二页时,第三页将初始化,但第一页尚未销毁。只有当你刷到第三页时,它才会被销毁。

因此,当您在第2页并刷回第1页时,不会发生任何变化,因为页面没有被销毁。如果您想在刷回时更改某些内容,我可以建议您实现OnPageChangeListener

viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    public void onPageScrollStateChanged(int state) {}
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    public void onPageSelected(int position) {
        // reset the zoom
    }
}); 
 类似资料:
  • 在我的应用程序中,我有一个ViewPager,里面有很多可滑动的标签,里面有碎片。是否有像这样的方法,每次片段出现在屏幕上时都会调用它?等是在创建片段之后调用的,而不是在片段出现在屏幕上时调用的,因此它们对我不起作用。我的问题可以用哪种方法?

  • 问题内容: 嗨,我正在使用类似于以下内容的方法来将div定位在屏幕中间: 但是,这样做的问题是它将项目放置在页面的中间而不是屏幕的中间。因此,如果页面高了几个屏幕,而我使div出现时,我就位于页面的顶部(该部分的顶部显示在屏幕上)。您必须向下滚动才能查看它。 有人可以告诉我您如何将其显示在屏幕中间吗? 问题答案: 只需添加即可,即使您向下滚动也可以看到它。

  • 有没有办法绕过的正常行为及其屏幕外页限制?我的包含四个,每个片断包含一个图像。我遇到的问题是,在实例化时,会创建两个,这导致从catch同时下载/提取大约20个图像(每个片断大约10个)。是否可以禁用屏幕外页限制? 我的目标是只在选择时下载图像,或者只在用户悬停图像时下载图像。实现这一点的一种方法是使用侦听器并设置一个标志,该标志告诉是否允许下载图像。 我能想到的第二种方法是在上设置一个,并且只在

  • 问题内容: 我在多个非缓冲通道上使用select时发现 即使两个通道都具有数据,但是在处理此选择时,在chana和case chanb中落下的调用也不平衡。 运行此演示,当其中一个通道完成读/写操作时,另一个通道可能仍保留999-1。 有什么方法可以确保平衡? 问题答案: Go 语句不偏向任何(就绪)情况。引用规范: 如果可以进行一种或多种通信,则可以通过 统一的伪随机选择 来选择可以进行的单个通

  • 我使用和来显示片段。最初增加了2个片段,Fragment1和Fragment2,在接收到服务器的响应后,在第二个位置增加了第三个片段Fragment3。因此,在添加所有页面之后,这应该是ViewPager中的片段序列-->Fragment1,Fragment3,fragment2。 下面是解决方案代码 代码:

  • 问题内容: 这是大多数DAO中使用的典型设置: 我看到只有呼叫,否或。 因此,当我从不在会话中返回实体时,无法加载惰性集合。类似地,保存似乎总是同花顺! Spring 的注解本身就具有开启和关闭会话以及交易的魔力吗? 问题答案: 在Spring中,由划定的业务交易与hibernate之间存在一一对应的关系。 也就是说,当通过调用方法开始业务交易时,将创建hibernate会话(Transactio