首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewPager in DrawerLayout

ViewPager in DrawerLayout
EN

Stack Overflow用户
提问于 2015-05-04 21:12:11
回答 1查看 204关注 0票数 0

我把ViewPager放在DrawerLayout里。现在,当我尝试滚动ViewPager时,菜单将关闭。

当我滚动viewPager时,请告诉我如何使菜单不关闭

viewPager适配器:

代码语言:javascript
复制
public class MenuNewsAdapter extends PagerAdapter {

ArrayList<News> news = new ArrayList<>();
Context context;

public MenuNewsAdapter(Context context, ArrayList<News> news) {
    this.news = news;
    this.context = context;
}

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


@Override
public Object instantiateItem(final ViewGroup container, final int position) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View rowView = inflater.inflate(R.layout.list_menu_news, container, false);

    ...

    rowView.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(container.getContext(), NewsViewActivity.class);
            intent.putExtra("news_id", news.get(position).newsId);
            container.getContext().startActivity(intent);
        }
    });

    container.addView(rowView);
    return rowView;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == ((LinearLayout) object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((LinearLayout) object);
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 22:03:12

只需添加一个onTouchListener。当您触摸ViewPager (action_down)上的屏幕时,不允许父节点拦截该事件。

代码语言:javascript
复制
viewPager.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        switch (action) {
        case MotionEvent.ACTION_DOWN:
            // Disallow Drawer to intercept touch events.
            v.getParent().requestDisallowInterceptTouchEvent(true);
            break;

        case MotionEvent.ACTION_UP:
            // Allow Drawer to intercept touch events.
            v.getParent().requestDisallowInterceptTouchEvent(false);
            break;
        }

        // Handle viewPager touch events.
        v.onTouchEvent(event);
        return true;
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30040070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档