ScrollView tiene un método para configurar el desplazamiento de desplazamiento xey, pero no hay ningún método para obtener el desplazamiento actual (todo lo que realmente me interesa es el desplazamiento Y, ya que ScrollView solo admite desplazamiento vertical). No veo ningún método que funcione en las superclases, y probé getTop() para la vista de contenido, que siempre es cero. ¿Me estoy perdiendo de algo?Cómo obtener el desplazamiento Y actual de un ScrollView
Respuesta
Llame a getScrollY() en el ScrollView. Consulte aquí para más detalles: http://developer.android.com/reference/android/view/View.html#getScrollY%28%29
Quería saber si mi scrollView envolviendo un textView con contenido que aumenta periódicamente (como una vista de registro) mostraba la última línea de texto. Esto lo hizo: 'boolean lastLineVisible = scrollView.getScrollY() + scrollView.getHeight() + 100> = textView.getHeight()' –
Si está seguro de que debe obtener algún valor después de usar getScrollY() o getTop(), tratan de poner los método dentro de un
yourScroolView.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"Current Y is : "+getScrollY,Toast.LENGTH_SHORT).show();
}
});
Ahora debería funcionar. De acuerdo con mi comprensión sobre este método, solo se ejecutará después de que se dibuje el diseño. Esa puede ser una de las razones por las cuales sigues recibiendo 0 anteriormente. Espero eso ayude.
Logré hacer lo siguiente. Primero, obtenga la altura y el ancho de la pantalla.
DisplayMetrics metrics = getResources().getDisplayMetrics();
float screenWidth = metrics.widthPixels;
float screenHeight = metrics.heightPixels;
a continuación para averiguar la altura del documento (del total, lo que se muestra y lo que está fuera de la pantalla)
public float getDocumentHeight(){
return (computeVerticalScrollRange() * screenHeight)/computeVerticalScrollExtent();
}
último para obtener el desplazamiento
public float getTopY(){
return (getDocumentHeight() * computeVerticalScrollOffset())/computeVerticalScrollRange();
}
Este darle la parte superior de la ventana relativa a la parte del documento que está viendo para que pueda encontrar la posición exacta de un evento por
public boolean onTouchEvent(MotionEvent event) {
int y = event.getY() + (int) getTopY();
}
También puede hacer algo similar para manejar el ancho
¿Por qué no intentar algo como esto?
targetScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int scrollX = targetScrollView.getScrollX();
Log.d(TAG, "scrollX: " + scrollX);
}
});
- 1. Cómo obtener la última posición de vista de desplazamiento, scrollview
- 2. Restablecer desplazamiento en ScrollView
- 3. Obtiene la posición actual de scrollview animado
- 4. problemas de desplazamiento con un ListView dentro de un ScrollView
- 5. Android ScrollView Tamaño de barra de desplazamiento
- 6. ¿Cómo puedo obtener la posición de desplazamiento actual en UIWebView
- 7. Desplazamiento Editar texto dentro de ScrollView
- 8. Cambiando el color del desplazamiento en scrollview en android
- 9. ¿Cómo obtener y configurar la posición de desplazamiento de la página web actual?
- 10. Android - Cómo cambiar el color de un ScrollView/ListView Permitir desplazamiento (véase la descripción, por ejemplo.)
- 11. ¿Cómo obtener el directorio actual?
- 12. Calcular el contenido de scrollview
- 13. Deshabilitar el desplazamiento de un ListView contenido dentro de un ScrollView
- 14. ¿Cómo obtener el lienzo actual?
- 15. ¿Cómo obtener el contexto actual?
- 16. cómo desactivar fling de un scrollView
- 17. WindowSoftInputMode y ScrollView
- 18. Eliminar barra de desplazamiento de ScrollView mediante programación en Android
- 19. cómo obtener un desplazamiento personalizado en Firefox y IE?
- 20. Sin efecto de desplazamiento con ScrollView en PopupWindow
- 21. ¿Cómo puedo obtener el nivel de zoom actual en UIScrollView?
- 22. ¿Cómo obtener el número de línea actual?
- 23. Android ListView ubicación de desplazamiento actual Y píxeles
- 24. ¿Cómo obtener el área de ejecución actual?
- 25. Dificultad con ScrollView y LinearLayout
- 26. Habilitar Desplazamiento dentro de EditText que está en ScrollView
- 27. Android: altura total de ScrollView
- 28. ¿Cómo obtener la fecha y hora actual?
- 29. ¿Podemos usar un ScrollView dentro de LinearLayout?
- 30. ¿Cómo obtener el ID de proceso actual?
Esos métodos están protegidos y, por lo tanto, solo son accesibles si está subclasificando ScrollView. –
Gracias, Cristian, tu solución me ayudó. Ya he tenido una vista subclase desde ScrollView. Se debe calcular con un oyente setOnScrollViewListener (http://www.nicholasmelnick.com/entries/104). También una primera solución con getScrollY() funciona bien. – CoolMind