2015-05-04 2 views
0

Я поставил ViewPager в DrawerLayout. Теперь, когда я пытаюсь прокрутить ViewPager, меню закрытоViewPager в DrawerLayout

enter image description here

скажите, пожалуйста, как сделать меню не закрывается, когда я прокручиваю ViewPager

ViewPager адаптер:

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); 
} 
} 

ответ

1

Просто добавьте onTouchListener. Когда вы касаетесь экрана на ViewPager (action_down), отключите родительский элемент, чтобы перехватить событие.

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; 
    } 
}); 
+0

Спасибо. Но когда я добавляю клик слушатель «rowView.setOnClickListener (новый View.OnClickListener() { общественного недействительный OnClick (View v) {» , я снова получаю проблему –

+0

что rowView? – dumazy

+0

Я добавил код в первом сообщении –

Смежные вопросы