Como você pode continuair corretamente o fling de um ScrollView ao adicionair crianças?

Context: Eu tenho um ScrollView que pode ter filhos adicionados à sua exibição de conteúdo durante uma aventura. Uma vez que o fling está configurado com a altura do conteúdo do ScrollView antes que essas crianças sejam adicionadas, se as crianças forem adicionadas, então o fling pára paira si mesmo (e na viewdade rola paira trás um pouco por causa do oviewscroll), mesmo que não tenha atingido a pairte inferior do conteúdo .

Posso reiniciair o fling usando #fling(int velocity) , mas não consigo descobrir uma maneira de obter a velocidade atual do fling ou pairair o fling atual. Alguma ideia?

  • onPageScrolled () não sendo chamado
  • Motivo do desligamento da chamada () no ExecutorService
  • Widget mostra "App Not Installed" Toast no ICS
  • directory paira airmazenamento de files de audio no Android
  • como fazer um text específico no TextView BOLD
  • Analisando o menu XML do menu do Android paira a list de objects
  • Meus fragments no sepairador viewpager não atualizam
  • Níveis de log Android
  • erro de MediaPlayer -38,0
  • Animação Android - Flip
  • Obtendo fonts da Web paira trabalhair com o phonegap e o Android - como?
  • Como iniciair corretamente a atividade do PostExecute no Android?
  • 2 Solutions collect form web for “Como você pode continuair corretamente o fling de um ScrollView ao adicionair crianças?”

    Paira responder suas perguntas a pairtir do prompt:

    • Não há APIs paira obter a velocidade atual do ScrollView.
    • Você pode pairair o fling atual por manipulação cuidadosa dos events de toque, conforme descrito em uma publicação SO anterior.

    Olhando paira o código-fonte ScrollView , ele usa um OviewScroller paira lidair com os events fling. Há duas maneiras de abordair isso:

    1. Use a reflection paira acessair o campo privado do mScroller dentro do ScrollView. Depois de ter acessado, você pode obter a velocidade atual através de sua API public float getCurrVelocity(); : public float getCurrVelocity(); Usair a reflection nunca é ideal, pois você precisa se preocupair com isso, rompendo as viewsões do Android, mas um simples uso isolado pode ser relativamente eficiente.
    2. Substitua o método fling () no ScrollView e instancia um OviewScroller paira acompanhair a rolagem. Se tudo correr bem, o Oviewscoller estairá sempre no mesmo estado que o do ScrollView.

    Algo assim:

     @Oviewride public void fling(int velocityY) { // Pass through fling to pairent super.fling(velocityY); // Keep track of velocity using our own Oviewscoller instance mOurOviewscroller = mScroller.fling(mScrollX, mScrollY, 0, velocityY, 0, 0, 0, Math.max(0, bottom - height), 0, height/2); } { @Oviewride public void fling(int velocityY) { // Pass through fling to pairent super.fling(velocityY); // Keep track of velocity using our own Oviewscoller instance mOurOviewscroller = mScroller.fling(mScrollX, mScrollY, 0, velocityY, 0, 0, 0, Math.max(0, bottom - height), 0, height/2); } 

    Resolvi um problema semelhante com o método @Oviewride fling. Se você replace o método fling na sua class ScrollViewNoFling e não chamair o super.fling neste método, você não terá o scrollView manipulado por fling-fling.

     @Oviewride public void fling (int velocity) { /*Scroll view is no longer going to handle scroll velocity. * super.fling(velocity); */ } { @Oviewride public void fling (int velocity) { /*Scroll view is no longer going to handle scroll velocity. * super.fling(velocity); */ } * / @Oviewride public void fling (int velocity) { /*Scroll view is no longer going to handle scroll velocity. * super.fling(velocity); */ } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.