android - layout_width - Desplácese programáticamente a la parte superior de un NestedScrollView
linearlayout android caracteristicas (11)
¿Hay alguna manera de desplazarse programáticamente a la parte superior de un
NestedScrollView
activando también los eventos de desplazamiento para el padre?
smoothScrollTo(x, y)
no delega los eventos de desplazamiento a
NestedScrollingParent
.
Agregue la línea dos veces. Trabajó para mí
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.fullScroll(View.FOCUS_UP);
Intenté todas las respuestas anteriores, nada parecía funcionar, pero solo necesitaba una publicación demorada.
scrollview.postDelayed(new Runnable() {
@Override
public void run() {
listener.setAppBarExpanded(false, true); //appbar.setExpanded(expanded, animated);
scrollview.fullScroll(View.FOCUS_DOWN);
}
}, 400);
Logré hacerlo (desplazamiento animado):
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
if (behavior != null) {
behavior.onNestedFling(coordinatorLayout, appBarLayout, null, 0, 10000, true);
}
donde
10000
es la velocidad en la dirección y.
Nada funcionó para mí, y realmente no sé por qué funcionó, pero aquí está mi solución y mi problema.
Al agregar la vista de reciclador a una vista de desplazamiento anidada, mostraba la vista de reciclador en la pantalla al llegar a esa actividad. Para desplazarme hacia arriba, tuve que usar esto:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.details_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
ProductDescriptionAdapter adapter = new ProductDescriptionAdapter(this);
adapter.setData(mProduct.getDetails());
recyclerView.setAdapter(adapter);
NestedScrollView scrollView = (NestedScrollView) findViewById(R.id.scroll);
scrollView.getParent().requestChildFocus(scrollView, scrollView);
Otra forma de desplazar
NestedScrollView
hacia arriba o hacia abajo es mediante la función
fullScroll(direct)
nestedScrollView.fullScroll(View.FOCUS_DOWN);
nestedScrollView.fullScroll(View.FOCUS_UP);
Podrías fingir fácilmente el desplazamiento en el nivel NestedScrollView. Básicamente le dices al coordinador de diseño que acabas de desplazarte por la altura de la barra de herramientas.
NestedScrollView nestedScrollView = (NestedScrollView) getActivity().findViewById(R.id.your_nested_scroll_view);
int toolbarHeight = getActivity().findViewById(R.id.toolbar).getHeight();
nestedScrollView.startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL);
nestedScrollView.dispatchNestedPreScroll(0, toolbarHeight, null, null);
nestedScrollView.dispatchNestedScroll(0, 0, 0, 0, new int[]{0, -toolbarHeight});
nestedScrollView.scrollTo(0, nestedScrollView.getBottom());
También me enfrenté a un escenario similar.
En mi caso, cuando me desplazo hacia abajo para finalizar, debería aparecer el botón FAB y cuando el usuario toque ese botón FAB debería ir a la parte superior de la página.
Para eso agregué @SilentKnight respondiendo
NestedScrollView.scrollTo(0, 0);
Para ir a la parte superior, pero que no es suficiente para una animación suave para desplazarse hacia arriba.
Para una animación fluida, he usado la respuesta @Sharj que es
NestedScrollView.fullScroll(View.FOCUS_UP);
Pero entonces mi AppBar no es visible por lo tanto, tengo que expandir la AppBar como sigue
appBarLayout1.setExpanded(true)
.
Entonces, usando estos tres, puedo ir sin problemas a la parte superior de la página.
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.scrollTo(0,0);
appBarLayout1.setExpanded(true);
Tuve un problema con NestedScrollView cuando lo usé que con RecyclerView. Este código funcionó para mí: nestedScrollView !!. GetParent (). RequestChildFocus (nestedScrollView, nestedScrollView);
val recyclerViewSearch = activity?.findViewById<RecyclerView>(R.id.recycler)
recyclerViewSearch.setAdapter(setAdapterSearch())
val nestedScrollView = activity?.findViewById<NestedScrollView>(R.id.bottom_sheet_Search)
nestedScrollView!!.getParent().requestChildFocus(nestedScrollView, nestedScrollView);
Utilice View.scollTo (int x, int y) en su lugar para desplazarse hasta la parte superior.
findViewById({your NestedScrollView resource id}).scrollTo(0, 0);
Puede usar esto para un desplazamiento suave.
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.smoothScrollTo(0,0);
O para desplazamiento normal
nestedScrollView.fullScroll(View.FOCUS_UP);
nestedScrollView.scrollTo(0,0);
NestedScrollView.scrollTo(0, 0);