Tengo un programa Android con ScrollView que hará correctamente un desplazamiento automático cuando llamo al método scrollBy en el emulador en mi computadora pero no lo hago en mi teléfono Android.Usando el método smoothScrollBy en la clase ScrollView de Android
Aquí está el código:
public class RecordGameActivity3 extends Activity {
ScrollView myView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordgame3);
myView = (ScrollView)findViewById(R.id.scrollView1);
}
public void addPlayer(View v)
{
//Removed non-related code
myView.smoothScrollBy(0, 50);
}
}
Además, el método regular scrollBy no funciona o el método scrollTo (aunque puede no sólo a utilizar correctamente ya que eso no funciona en el equipo, ya sea) ¿Alguien tiene una idea de lo que podría estar mal?
EDIT:
Mi problema como la respuesta de Darrell me mostró fue que yo estaba llamando a mi método smoothScrollBy desde dentro de una función en la que yo estaba haciendo cambios en el diseño que haría que el área de desplazamiento suficientemente grande como para ser capaz de estar desplazado. Aparentemente, cuando lo llamé a la función, los cambios no se aplicaron realmente y no se pudo desplazar.
Por lo tanto, he cambiado el código usando su consejo a lo siguiente:
public class RecordGameActivity3 extends Activity {
ScrollView myView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordgame3);
myView = (ScrollView)findViewById(R.id.scrollView1);
// New code that listens for a change in the scrollView and then calls the scrollBy method.
ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
myView.smoothScrollBy(0, 100);
}});
}
public void addPlayer(View v)
{
//Code that is called on an onClick listener that adds things to the ScrollView making it scrollable.
}
}
OK - No lo estoy haciendo desde el método onCreate, pero lo estoy haciendo en un método en el que solo estoy agregando componentes que lo habilitarían para desplazarse. ¿Cómo puedo usar ViewTreeObserver? –
No importa, descubrí cómo. Muchas gracias por su ayuda. –