ScrollView (barre de défilement)
Introduction à cette section :
Cette section apporte le dixième des contrôles de base de l'interface utilisateur d'Android : ScrollView (barre de défilement), ou nous devrions l'appeler Barre de défilement verticale, correspondant à une autre barre de défilement horizontale : HorizontalScrollView, jetons d'abord un œil à la documentation officielle Lien : ScrollView, nous pouvons voir la structure de la classe comme suit :
Hé, il s'avère que c'est un conteneur FrameLayout, mais sur la base de il Ajout du défilement, permettant d'afficher plus de contenu qu'il n'est réellement possible !
De plus, vous ne pouvez placer qu'un seul élément enfant à l'intérieur, qui peut être un composant unique ou une hiérarchie complexe enveloppée dans une mise en page !
Généralement, pour les situations où l'affichage peut ne pas être complet, on peut en mettre un directement sur la couche externe du layout : ScrollView ou HorizontalScrollView ! C'est aussi simple que ça ~ !
Quelques exigences que vous pourriez rencontrer
D'accord, ne déduisons pas les documents un par un, parlons simplement de certaines exigences que vous pourriez rencontrer dans le développement réel :
Un autre problème très typique est : le problème d'imbrication de ScrollView et ListView. Ceci est mis dans le chapitre de ListView. Expliquons ~
1. Faites défiler vers le bas :
Nous pouvons utiliser directement le ScrollView qui nous fournit : la méthode fullScroll() :
scrollView.fullScroll(ScrollView.FOCUS_DOWN);Faites défiler vers le bas
scrollView.fullScroll(ScrollView.FOCUS_UP);Faites défiler vers le haut
De plus, lorsque vous utilisez cette chose, faites attention aux choses asynchrones, c'est-à-dire qu'après l'ajout de View, elle peut ne pas être complètement affichée. Si vous appelez cette méthode directement à ce moment-là, elle peut être invalide. Dans ce cas, vous devez écrire votre propre gestionnaire pour mettre à jour~
Exemple de code :
.Rendu :
Code d'implémentation :
La mise en page est relativement simple, donc je ne le publierai pas ici, collez directement MainActivityMainActivity.java
.bouton privé btn_down;
bouton privé btn_up;
private ScrollView scrollView;
privé TextView txt_show ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bind Vues();
}
private void bindViews () {
btn_down = (bouton) findViewByid (r.id.btn_down);
btn_up = (bouton) findviewByid (r.id.btn_up);
scrollView = (ScrollView) findViewById(R.id.scrollView);
txt_show = (Te xtView) findViewById(R.id.txt_show);
btn_down.setOnClickListener(this);
btn_up.setOnClickListener(ce );
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 100; i++) {
sb.append("呵呵 * " + i + " n");
}
txt_show.setText(sb.toString());
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_down:
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
break;
cas R.id.btn_up :
scrollView.fullScroll(ScrollView.FOCUS_UP);
break;
}
}
}
Bien sûr, en plus de cette méthode, vous pouvez également utiliser une autre manière d'écrire plus compliquée :
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
public void run() {
if (scroll == null || inner == null) {
return;
}
int offset = inner.getMeasuredHeight() - scroll.getHeight();
) {
Les paramètres
scrollTo
() sont x, y, faites défiler jusqu'à la position x, y correspondante !
C'est plus simple :
VerticalCurseur de direction : Android :
scrollbarThumbVertical
Horizontal Curseur directionnel : Android :scrollbarThumbHorizontal
3. Masquer le curseur D'accord, celui-ci, il semble que ce soit le cas. ne sert à rien :
Il existe deux méthodes : 1.android:scrollbars="none"
2.Paramètre du code Java : scrollview.setVerticalScrollBarEnabled(false);
4. Définir la vitesse de défilement :Cela ne nous fournit pas de méthode pouvant être définie directement. Nous devons hériter nous-mêmes de ScrollView, puis le réécrire. Méthode de lancement de vide public (int VelocityY) :
@Override public void fling(int velocityY) { super.fling(velocityY / 2); //速度变为原来的一半 }
Résumé de cette section :
.D'accord, il n'y a qu'un nombre limité de choses ScrollView auxquelles je peux penser, car c'est généralement utilisé. Ce n'est pas grand-chose, généralement il suffit de le mettre à l'extérieur. De plus, le problème le plus courant est généralement l'imbrication de ScrollView et ListView. Si vous avez quelque chose à ajouter, n'hésitez pas à demander, merci~