Me gustaría que ScrollView empiece desde abajo. ¿Algún método?Android: ScrollView force to bottom
Respuesta
scroll.fullScroll(View.FOCUS_DOWN)
también debería funcionar.
Eso no parece hacer nada, ¿alguna sugerencia? Lo probé onCreate y más tarde en el onClick de un botón. – RichardJohnn
Ver respuestas debajo de – Oliv
Parece que no funciona para cambiar la orientación. De lo contrario, funciona. – Prashant
se debe ejecutar el código dentro del scroll.post así:
scroll.post(new Runnable() {
@Override
public void run() {
scroll.fullScroll(View.FOCUS_DOWN);
}
});
Sí, debe publicarse en la cola ejecutable para que funcione. – josh527
hay alguna manera sin perder elemento actual de enfoque, cuando hago esto pierdo el foco de mi elemento actual (diferente de scrollview) – rkmax
Esto es necesario solo en los casos en que el diseño aún no se ha medido y trazado (por ejemplo, si ejecuta en onCreate). En casos como presionar un botón, no se necesita .post(). –
Me incremento para funcionar a la perfección.
private void sendScroll(){
final Handler handler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
try {Thread.sleep(100);} catch (InterruptedException e) {}
handler.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(View.FOCUS_DOWN);
}
});
}
}).start();
}
Nota
Esta respuesta es una solución para las versiones antiguas de Android realmente. Hoy el postDelayed
no tiene más ese error y deberías usarlo.
No más de dos, pero esto funciona bien en mi teléfono (LG JellyBean 4.1.2 Optimus G). – Youngjae
¿Por qué no usar scrollView.postDelayed (ejecutable, 100)? –
@MattWolfe en ese momento no funciona en algunas versiones anteriores de Android. Pero hoy esta respuesta está en desuso en absoluto. – ademar111190
Cuando la vista no está cargada, no puede desplazarse. Puede hacerlo 'más tarde' con una llamada de correo o de espera como se indica arriba, pero esto no es muy elegante.
Es mejor planear el desplazamiento y hacerlo en el próximo onLayout(). Código de ejemplo aquí:
Una cosa a considerar es lo que no va a establecer. Asegúrese de que los controles de su hijo, especialmente los controles EditText, no tengan configurada la propiedad RequestFocus. Esta puede ser una de las últimas propiedades interpretadas en el diseño y anulará la configuración de gravedad en sus padres (el diseño o ScrollView).
Lo que funcionó mejor para mí es
scroll_view.post(new Runnable() {
@Override
public void run() {
// This method works but animates the scrolling
// which looks weird on first load
// scroll_view.fullScroll(View.FOCUS_DOWN);
// This method works even better because there are no animations.
scroll_view.scrollTo(0, scroll_view.getBottom());
}
});
Intenté esto, pero el algoritmo aquí es incorrecto. Verifique mi respuesta en la parte inferior, por favor. – peacepassion
scroll.fullScroll(View.FOCUS_DOWN)
dará lugar al cambio de enfoque. Eso traerá un comportamiento extraño cuando hay más de una vista enfocable, por ejemplo, dos EditText. Hay otra manera para esta pregunta.
View lastChild = scrollLayout.getChildAt(scrollLayout.getChildCount() - 1);
int bottom = lastChild.getBottom() + scrollLayout.getPaddingBottom();
int sy = scrollLayout.getScrollY();
int sh = scrollLayout.getHeight();
int delta = bottom - (sy + sh);
scrollLayout.smoothScrollBy(0, delta);
Esto funciona bien.
Me alegro de no tener que perder más tiempo en esto. Justo lo que necesitaba –
Esto debería tener más votos positivos. Es la mejor respuesta de lejos. –
Esta es la mejor respuesta que tenemos aquí. –
No era exactamente la respuesta a la pregunta, pero necesitaba desplazarme hacia abajo tan pronto como EditText obtuviera el enfoque. Sin embargo, la respuesta aceptada haría que ET también pierda el enfoque de inmediato (para el ScrollView supongo).
Mi solución fue la siguiente:
emailEt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
Toast.makeText(getActivity(), "got the focus", Toast.LENGTH_LONG).show();
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
}, 200);
}else {
Toast.makeText(getActivity(), "lost the focus", Toast.LENGTH_LONG).show();
}
}
});
veces scrollView.post no funciona
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
tanto, si utiliza scrollView.postDelayed, que sin duda trabajar
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
},1000);
- 1. Elementos de ListBox Presentes Bottom-to-Top
- 2. How to force emacs recolor
- 3. Git force complete sync to master
- 4. hg force update to new files
- 5. css footer position stick to the bottom of browser?
- 6. Android ScrollView isFinished?
- 7. Android scrollview onScrollChanged
- 8. ocultar scrollview stick android
- 9. Android: Problema ScrollView
- 10. Android: Detección Cuando ScrollView toca fondo
- 11. Android: altura total de ScrollView
- 12. Android: ScrollView en LinearLayout vertical
- 13. Android :: VideoView dentro de ScrollView
- 14. Android force Disposición Horizontal (horizontal)
- 15. Android wake lock force cerrar
- 16. botones debajo expanding scrollview
- 17. SQL Select Bottom Records
- 18. Jquery animate bottom problema
- 19. absolute: bottom no funciona
- 20. ¿Cómo crear scrollview borrable en android?
- 21. Borde de desvanecimiento de ScrollView de Android
- 22. Android scrollview autoscroll como texto se agrega
- 23. cambiar ScrollView scrollBarStyle programmatically en Android
- 24. Múltiples WebViews en ScrollView dando problemas (Android)
- 25. Android ScrollView Tamaño de barra de desplazamiento
- 26. Problema de diseño de Android ScrollView
- 27. JQuery Detect Scroll at Bottom
- 28. Force Widget de Android para actualizar
- 29. ¿Cómo aumentar la altura de ScrollView en Android?
- 30. Port Boost to Android
Creo que es solo scrollTo(), sí, acabo de comprobar los documentos de desarrollo para ScrollView. Pan comido. –