Qual é a diferença entre ScrollView
e NestedScrollView
? Os dois se estendem FrameLayout
. Quero conhecer em profundidade os prós e os contras de ambos.
android
xml
android-layout
android-scrollview
android-nestedscrollview
Chintan Soni
fonte
fonte
Respostas:
NestedScrollView
como o nome sugere, é usado quando há necessidade de uma exibição de rolagem dentro de outra exibição de rolagem. Normalmente, isso seria difícil de realizar, uma vez que o sistema não seria capaz de decidir qual visualização seria exibida.É aqui que
NestedScrollView
entra.fonte
Além da rolagem aninhada, foi
NestedScrollView
adicionada uma funcionalidade importante, que pode até torná-la interessante fora dos contextos aninhados: Ele tem suporte paraOnScrollChangeListener
. A adição de umOnScrollChangeListener
aoScrollView
API abaixo da API 23 original exigia subclassificaçãoScrollView
ou brincadeira comViewTreeObserver
oScrollView
que geralmente significa ainda mais trabalho do que subclassificação. ComNestedScrollView
isso pode ser feito usando o configurador embutido .fonte
Além das vantagens listadas nas respostas fornecidas, mais uma vantagem do NestedScrollView sobre o ScrollView é sua compatibilidade com o CoordinatorLayout. O ScrollView não coopera com o CoordinatorLayout. Você precisa usar o NestedScrollView para obter o comportamento de "rolagem para fora da tela" da barra de ferramentas.
A barra de ferramentas não será recolhida com o Scrollview como filho do CoordinatorLayout
fonte
NestedScrollView
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
https://developer.android.com/reference/android/widget/ScrollView.html
fonte
NestedScrollView é como ScrollView, mas em NestedScrollView podemos colocar outras visualizações de rolagem como filho dela, por exemplo, RecyclerView.
Mas se colocarmos o RecyclerView dentro do NestedScrollView, a rolagem suave do RecyclerView será interrompida. Então, para retornar a rolagem suave, há um truque:
coloque acima da linha após configurar o adaptador para o recyclerView.
fonte
Acho que um benefício do uso da exibição Rolagem aninhada é que o layout do coordenador apenas escuta eventos de rolagem aninhada. Então, se por ex. você deseja que a barra de ferramentas role para baixo ao rolar o conteúdo da atividade, ela será rolada para baixo apenas quando você estiver usando a exibição de rolagem aninhada em seu layout. Se você usar uma exibição de rolagem normal em seu layout, a barra de ferramentas não será rolada quando o usuário rolar o conteúdo.
fonte