【问题标题】:How to disable viewpager swiping with finger touch which extends PagerAdapter in android如何禁用在android中扩展PagerAdapter的手指触摸viewpager滑动
【发布时间】:2020-01-09 20:55:24
【问题描述】:

我有带视图寻呼机的滑块。我有适配器扩展PagerAdapter。 问题是:我不希望用手指滑动滑块。这意味着,我希望它自动工作。

public class TopFoodSlider_adapter extends PagerAdapter {

    private Context context;
    private List<top_food_slider> slideList;
    private int custom_postion = 0;
    private int t =0;

    public TopFoodSlider_adapter(Context context, List<top_food_slider> slideList) {
        this.context = context;
        this.slideList = slideList;
    }



    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position)
    {
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.top_food_slider_item,container,false);

        top_food_slider slid = slideList.get(custom_postion);
        custom_postion++;
        int img=slid.getImg_src();
        ImageView imageView=view.findViewById(R.id.imageView);

        imageView.setImageResource(img);
        container.addView(view);

        if (custom_postion>=slideList.size())
            custom_postion = 0;

        return view;
    }

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

}

【问题讨论】:

    标签: android-viewpager touch swipe touch-event android-pageradapter


    【解决方案1】:

    您可以通过扩展StoryViewPager 并覆盖onTouchEventonInterceptTouchEvent 来禁用滑动。

    class NoSwipingViewPager @JvmOverloads constructor(
        context: Context,
        attrs: AttributeSet? = null
    ) : ViewPager(context, attrs) {
    
        override fun onTouchEvent(event: MotionEvent): Boolean {
            return false
    
        }
    
        override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
            return  false
        }
    }
    

    您可以在以下答案中了解更多信息:How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多