web-dev-qa-db-fra.com

android ListView scrollbarStyle

Est-ce que quelqu'un connaît de la documentation sur Android: scrollbarStyle? Je voudrais voir des exemples de chacune des 4 valeurs w/screenshots si possible. Je vois la différence entre les types extérieur et intérieur, mais en quoi consistent les parties Inset & Outset? Je ne semble pas voir de différence entre insideOutset et insideInset, par exemple, de même que je ne vois pas de différence entre outsideOutset et outsideOutset.

merci d'avance! Ben

49
Ben

Il n'y a pas de valeurs telles que outsideOutset et insideOutset. Les quatre valeurs possibles sont insideOverlay, insideInset, outsideOverlay, outsideInset
la documentation est là pour suivre deux liens ...

http://developer.Android.com/reference/Android/view/View.html#attr_Android:scrollbarStyle

http://developer.Android.com/reference/Android/view/View.html#SCROLLBARS_INSIDE_INSET

Je ne comprenais pas bien la documentation. Alors, prenant comme référence la démo de ApiDemos Scrollbar, j’ai essayé ceci. Mais j’ai trouvé qu’il n’y avait aucune différence entre insideInset et outsideOverlay.
Ces deux valeurs sont diff, soit elles devraient avoir les deux Inset ou Overlay

scrollbar3.xml mis à jour est 

<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">

<ScrollView
    Android:id="@+id/view1"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="insideOverlay"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView>

<ScrollView
    Android:id="@+id/view2"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="insideInset"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView>

<ScrollView
    Android:id="@+id/view3"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="outsideOverlay"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView>

<ScrollView
    Android:id="@+id/view4"
    Android:layout_width="100dip"
    Android:layout_height="120dip"
    Android:padding="8dip"
    Android:scrollbarStyle="outsideInset"
    Android:background="@Android:color/white"
    Android:overScrollMode="never">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColor="#ffffff"
        Android:background="@Android:color/darker_gray"
        Android:text="@string/scroll_text" />
</ScrollView></LinearLayout>

J'espère que quelqu'un va voir cela et clarifier ...

Screenshot for the View Scrollbar styles

58
Vijay C

Voici un exemple un peu plus détaillé. J'ai mis en place des couleurs de fond pour rendre plus évident ce qui se passe ici.

Android scrollBarStyle settings visualized

Tout d'abord, les couleurs:

  • noir - marges
  • blanc - rembourrage
  • grey - le contenu de la vue à défilement
  • vert - la barre de défilement if il occupe son propre espace (je l'ai ajouté explicitement en tant que scrollbarTrackVertical pour les deux exemples "incrustés")

Définissons deux sections:

  • "zone de contenu" - les éléments à afficher dans la vue par défilement
  • "padding" - l'espace autour du contenu de la vue de défilement

Pensons aux deux parties de la scrollBarStyle séparément:

  • inside - la barre de défilement apparaît dans la zone de contenu (le remplissage entoure à la fois le contenu et la barre de défilement)

  • outside - la barre de défilement apparaît en dehors de la zone de contenu

  • overlay - la barre de défilement recouvre le bord droit de la section dans laquelle elle se trouve 

  • inset - la barre de défilement pousse la section à gauche, occupant ainsi son propre espace

La mise en page xml apparaît ci-dessous

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#000"
    >

    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:scrollbarStyle="insideOverlay"
        Android:background="#fff"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >
            <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
                <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideOverlay"/>
            </LinearLayout>
    </ScrollView>

    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:scrollbarStyle="insideInset"
        Android:background="#fff"
        Android:scrollbarTrackVertical="@drawable/green_block"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >

        <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="insideInset" />
        </LinearLayout>

    </ScrollView>
    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:scrollbarStyle="outsideOverlay"
        Android:background="#fff"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >

        <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideOverlay" />
        </LinearLayout>

    </ScrollView>
    <ScrollView 
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:background="#fff"
        Android:layout_weight="1"
        Android:scrollbarStyle="outsideInset"
            Android:scrollbarTrackVertical="@drawable/green_block"
        Android:fadeScrollbars="false"
        Android:layout_margin="8dp"
        Android:padding="16dp" >

        <LinearLayout Android:orientation="vertical" Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:background="#aaa" >
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
            <TextView Android:textSize="32sp" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="outsideInset" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>
181
Scott Stanchfield

Les réponses ci-dessus ne fonctionnaient pas très bien pour moi.

 enter image description here

Si c'est ce que vous voulez réaliser, voici ce qui se passe:

ListView:

<ListView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:scrollbarStyle="outsideOverlay"
    Android:scrollbarThumbVertical="@drawable/scrollbar" />

Barre de défilement dessinable:

<?xml version="1.0" encoding="utf-8"?>
<layer-list 
     xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:drawable="@Android:color/transparent"
        Android:width="20dp"/>
    <item
        Android:drawable="@Android:color/holo_red_dark"
        Android:right="18dp" />
</layer-list>

Merci à cette réponse

0
NecipAllef