Ho un programma Android con ScrollView che eseguirà correttamente uno scorrimento automatico quando chiamo il metodo scrollBy sull'emulatore del mio computer ma non lo farò sul mio telefono Android.Utilizzo del metodo smoothScrollBy nella classe Android ScrollView
Ecco il codice:
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);
}
}
Inoltre, il metodo normale scrollBy non funziona o il metodo scrollTo (anche se può non solo usare quel correttamente dal momento che non funziona sul computer sia). Qualcuno ha un'idea di cosa potrebbe essere sbagliato?
EDIT:
Il mio problema come la risposta di Darrell ha mostrato me era che mi stava chiamando il mio metodo smoothScrollBy all'interno di una funzione in cui stavo facendo modifiche al layout che renderebbe l'area di scorrimento abbastanza grande da poter essere scorrere. Apparentemente, quando l'ho chiamato nella funzione, le modifiche non sono state effettivamente applicate e quindi non è stato possibile scorrere.
Così, ho cambiato il codice utilizzando il suo consiglio al seguente:
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: non lo faccio dal metodo onCreate, ma lo sto facendo in un metodo in cui sto solo aggiungendo componenti che consentano di scorrere. Come posso utilizzare ViewTreeObserver? –
Non importa, ho capito come. Grazie mille per il tuo aiuto. –