J'affiche des données dans un ScrollView. Au démarrage de l’activité (méthode onCreate), je remplis le ScrollView avec des données et je souhaite faire défiler vers le bas.
J'ai essayé d'utiliser getScrollView().fullScroll(ScrollView.FOCUS_DOWN)
. Cela fonctionne lorsque je le fais comme une action sur un clic sur un bouton mais cela ne fonctionne pas dans la méthode onCreate.
Existe-t-il un moyen de faire défiler ScrollView vers le bas au démarrage de l'activité? Cela signifie que la vue est déjà défilée vers le bas lors de la première utilisation.
Cela doit être fait comme suit:
getScrollView().post(new Runnable() {
@Override
public void run() {
getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
}
});
De cette façon, la vue est d'abord mise à jour, puis défile jusqu'au "nouveau" fond.
Mettez le code suivant après l'ajout de vos données:
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Cela fonctionne pour moi:
scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollview.post(new Runnable() {
public void run() {
scrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});
Vous pouvez le faire dans un fichier de mise en page:
Android:id="@+id/listViewContent"
Android:layout_width="wrap_content"
Android:layout_height="381dp"
Android:stackFromBottom="true"
Android:transcriptMode="alwaysScroll">
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
},1000);
Juste après avoir ajouté des données à la vue, ajoutez cette ligne unique:
yourScrollview.fullScroll(ScrollView.FOCUS_DOWN);
Essaye ça
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Après l’initialisation de votre composant d’interface utilisateur, remplissez-le avec les données. ajoutez ces lignes à votre méthode de création
Runnable runnable=new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
};
scrollView.post(runnable);
C'est la meilleure façon de faire cela.
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(View.FOCUS_DOWN);
}
});
}
});