I put a ViewPager in a DrawerLayout. Now when I try to scroll ViewPager, menu is closed
please tell me how to make the menu does not close when I scroll viewPager
viewPager adapter:
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);
}
}
Just add an onTouchListener
. When you touch the screen on the ViewPager
(action_down) disallow parent to intercept the event.
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;
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.