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 :

1.png

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 :

2.gif

Code d'implémentation :

La mise en page est relativement simple, donc je ne le publierai pas ici, collez directement MainActivityMainActivity.java

.
classe publique MainActivity étend AppCompatActivity implémente View.OnClickListener {

    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 :

public static void scrollToBottom(final View scroll, final View inner) {
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 !
2. Définissez l'image du curseur de défilement

C'est plus simple :

Vertical
Curseur 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~

.