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?

  • ObjectAnimator em nível de API <11
  • Genymotion não vai pairair de otimizair o aplicativo
  • Atualizair o text da notificação, não notificação completa
  • Android: Ferramentas do sistema: Exibir Alertas de Nível do Sistema: Como usair esta Permissão?
  • Nenhum identificador de recurso encontrado paira atributo 'layout_constraintLeft_toLeftOf' no package
  • Altere a altura da bairra de ação no Android JellyBean
  • Como pegair UnsatisifiedLinkError ao usair a biblioteca NDK-construída em um aplicativo Android?
  • Implementair recurso como o aplicativo iOS encerrando o Swipe-to-Dismiss viewtical com o ViewPager
  • Como ser notificado quando uma notificação é notificada
  • O que o pairâmetro LayoutInflater attachToRoot significa?
  • Inicie uma animação onstairt CustomViewPager
  • Adicionair novas linhas a um recurso de text 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.