我正在构建一个画廊应用程序。我的主要活动中有一个扩展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 会保存缩放状态。但是当我返回到上一页时,我希望看到默认大小的图片,而无需任何更改。
考虑到存储的项目是动态创建的,当它们再次出现在屏幕上时,我该如何影响这些项目?
你在这里弄错了什么。请考虑以下事项:
如果你的浏览页面中有三个页面,当你的应用程序出现在屏幕上时,第一页和第二页将被初始化。当您滑动到第二页时,第三页将初始化,但第一页尚未销毁。只有当你刷到第三页时,它才会被销毁。
因此,当您在第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。 下面是解决方案代码 代码: