O ViewPager intercepta todos os events onTouch do eixo x. Como desativair?

Escopo

Há um visor de dois fragments. Um desses fragments tem um layout que escuta as mudanças de onTouch no eixo X.

Problema

Layout não obtém quase todos os events Action.Move ao tocair e deslizair ao longo do eixo X. Pairece que o viewpager possui um onInceptceptTouchEvent que retorna viewdadeiro.

  • Como obter o user Home / Local de trabalho paira um user no Android
  • EditText não rolável dentro ScrollView
  • Como posso obter o meu site móvel de lairgura fixa paira sempre apairecer "totalmente ampliado"?
  • Android - Image Button Scale
  • Android v21 Theme.Appcompat sotaque de cor é ignorado, sem preenchimento em dialogs
  • Pré-visualizair a visualização do fragment no ViewPager na primeira execução
  • Questão

    É real replace o comportamento do viewpager paira que ele e meu layout funcionem juntos? Portanto, a situação perfeita é o layout intercepta todos os events onTouch e o viewpager gerencia o resto dos events OnTouch. Obrigado!

  • Qual format é paira câmera Android com image em brutoCallback?
  • Robotium. No conjunto de testes, cada próximo teste é afetado pelo teste anterior
  • Erro: Falha na execução da tairefa ': app: mergeDebugResources'. > Algum fragment de file falhou, veja logs paira obter detalhes crie problemas de gradle
  • Android: abra um pdf do meu aplicativo usando o built in pdf viewer
  • Não é possível adicionair a exibição de header paira a list - setAdapter já foi chamado
  • .net web service retornando NULL objects no início dos dados
  • 4 Solutions collect form web for “O ViewPager intercepta todos os events onTouch do eixo x. Como desativair?”

    Você está certo, eu acredito que cada recipiente de rolagem intercepta events de toque, mas você pode evitá-lo. Você pode colocair um ouvinte em seu layout:

    public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: pager.requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: pager.requestDisallowInterceptTouchEvent(false); break; } } 

    Situação semelhante (mas não usando um ViewPager), colocando isso na visão que precisava do evento de toque funcionou paira mim. Adicione cheques paira MotionEvents que não sejam ACTION_MOVE se aplicável ao seu caso de uso.

     @Oviewride public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { this.getPairent().requestDisallowInterceptTouchEvent(true); return true; } else { return super.onTouchEvent(event); } } public boolean onTouchEvent (evento MotionEvent) { @Oviewride public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { this.getPairent().requestDisallowInterceptTouchEvent(true); return true; } else { return super.onTouchEvent(event); } } se (event.getAction () == MotionEvent.ACTION_MOVE) { @Oviewride public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { this.getPairent().requestDisallowInterceptTouchEvent(true); return true; } else { return super.onTouchEvent(event); } } retornair viewdadeiro; @Oviewride public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { this.getPairent().requestDisallowInterceptTouchEvent(true); return true; } else { return super.onTouchEvent(event); } } } @Oviewride public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { this.getPairent().requestDisallowInterceptTouchEvent(true); return true; } else { return super.onTouchEvent(event); } } 

    O neutrino estava certo!

     getPairent().requestDisallowInterceptTouchEvent(true); 

    Uma vez que o access ao viewpager entra em contato com o Intercepto do toque, a visão secundária pode obter o evento. insira a descrição da image aqui

    Eu uso um FrameLayout no viewpager paira obter o efeito DrawerLayout (eu não preciso combinair com a altura da canvas, então não posso usair a gaveta ou a gaveta de navigation).
    Isso realmente ajuda!

    Eu tive um problema pairecido.

    No meu caso, eu estava configurando um OnTouchListener no ViewPager mas não estava recebendo events de toque quando as crianças que receberam o toque tiviewam o conjunto onClick .

    O que fiz foi estender a class ViewPager e chamair meu ouvinte de cliques dentro do método onInterceptTouchEvent(boolean) e funcionou bem. Apenas tenha cuidado paira não interceptair events errados.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.