Android:PagerAdapter 删除最后一个视图,因此您无法向左滑动

Posted

技术标签:

【中文标题】Android:PagerAdapter 删除最后一个视图,因此您无法向左滑动【英文标题】:Android: PagerAdapter remove last view so you can't swipe left 【发布时间】:2015-01-30 15:10:06 【问题描述】:

有没有办法防止用户在 PagerAdapter 中向左滑动?

当用户第一次进入应用程序时,他们无法向左滑动,因为那里什么都没有。那么,如果你每次向右滑动,左边的图像都会被破坏,并且不会像你刚开始运行应用程序时那样出现。

        @Override
        public Object instantiateItem(ViewGroup container, int position) 
        
            Context context = MainActivity.this;

            //
            Integer highest_img = mImages.length - 1;
            Integer randomInt = getRanValue(highest_img);
            //

            ImageView imageView = new ImageView(context);
            int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setImageResource(mImages[randomInt]);

            ((ViewPager) container).addView(imageView, 0);

            return imageView;
        

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) 
        
            ((ViewPager) container).removeView((ImageView) object);
        

【问题讨论】:

那么,如果视图在您向相反方向移动到其他视图时被破坏,会有什么问题呢?它有助于节省内存。 所以你想要一个单向滑动浏览器? @SamBains 这正是我想要的。 Control which directions the ViewPager can be scrolled, dynamically with UI feedback 和 How to disable ViewPager from swiping in one direction 的可能副本 【参考方案1】:

我为我的问题找到了更好的解决方案。

我在 MotionEvent 中使用了 onFling() 方法,当有人滑动时,我将运行带有图像替换的动画。

【讨论】:

以上是关于Android:PagerAdapter 删除最后一个视图,因此您无法向左滑动的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Android 的 PagerAdapter 类自动显示图像?

Android PagerAdapter :: 将当前项目放入位图中

Android setVisibility无法在PagerAdapter中运行

java PagerAdapter的一个实现,可以动态添加或删除视图。

Android ViewPager/PagerAdapter ImageView OutOfMemoryError

android viewpager怎么使用 findviewbytag