IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

ScrollView : scroller horizontalement


Sujet :

Android

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Par défaut ScrollView : scroller horizontalement
    Bonjour

    Voici mon XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent">
        <LinearLayout 
            android:orientation="vertical" 
            android:paddingLeft="10dip" 
            android:paddingTop="10dip" 
            android:layout_height="fill_parent" 
            android:layout_width="fill_parent">
        	<TextView  
        	    android:layout_height="wrap_content" 
        	    android:layout_width="fill_parent" 
        	    android:text="Texte très très très très trsè très très très trsè  trsè très très long" android:singleLine="true">
            </TextView>
        </LinearLayout>
    </ScrollView>

    Je veux en fait afficher le texte sur une seule ligne et que si ce dernier ne peut pas être intégralement affiché à l'écran pouvoir scroller horizontalement sur mon écran pour voir la suite. Or je ne peux pas pour l'instant. Pourquoi ?

    Si quelqu'un à une idée...


    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Par défaut
    Salut,

    Regarde du côté de android:ellipsize="marquee", cela permet de faire défiler automatiquement ton texte.

    En espérant que ça aide

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Par défaut
    J'ai essayé mais je ne peux toujours pas scroller (de plus le texte ne défile pas automatiquement)

    Pour info : j'ai ajouté les deux lignes suivantes dans mon XML au niveau du TextView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    android:singleLine="true" 
    android:ellipsize="marquee"

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Par défaut
    En fait pour que ellipsize fonctionne, il faut que l'élément ai le focus. J'ai modifié ton xml, regarde ce que ça donne et dis moi si ça te va

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_height="fill_parent" android:layout_width="fill_parent">
    	<LinearLayout android:orientation="vertical"
    		android:paddingLeft="10dip" android:paddingTop="10dip"
    		android:layout_height="fill_parent" android:layout_width="fill_parent">
    		<TextView android:layout_height="wrap_content"
    			android:layout_width="fill_parent"
    			android:text="Texte très très très très trsè très très très trsè  trsè très très long Texte très très très très trsè très très très trsè  trsè très très long"
    			android:singleLine="true" android:ellipsize="marquee"
    			android:marqueeRepeatLimit="marquee_forever" android:focusable="true"
    			android:focusableInTouchMode="true" />
     
    	</LinearLayout>
    </ScrollView>

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Citation Envoyé par TsCyrille Voir le message
    J'ai essayé mais je ne peux toujours pas scroller (de plus le texte ne défile pas automatiquement)

    Pour info : j'ai ajouté les deux lignes suivantes dans mon XML au niveau du TextView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    android:singleLine="true" 
    android:ellipsize="marquee"
    Pour cette question les attributSet definie ci dessous ne suffisent pas il faut declarer ajouter la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:focusable="true"

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Sinon pour faire un scrol horizontale, tu dois mettre ton schroll dans un HorizontaleScrollView.





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="wrap_content" android:layout_height="wrap_content">
    	<HorizontalScrollView android:id="@+id/HorizontalScrollView01"
    		android:layout_width="wrap_content" android:layout_height="wrap_content">
    		<TextView android:text="@+id/TextView01"
    			android:layout_width="wrap_content" android:layout_height="wrap_content"
    			android:id="@+id/horizontal_scroll"></TextView>
    	</HorizontalScrollView>
    </LinearLayout>
    Ce textview est un scroll Textviex horizontale.

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Par défaut
    Merci pour votre aide : les deux solutions marchent bien...

    Je vais utiliser un HorizontalScrollView qui correspond un peu plus à ce que je veux obtenir. Mais j'ai un petit souci avec ce widget :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <HorizontalScrollView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:scrollbars="none" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent">
     
        <TableLayout 
           android:paddingLeft="10dip" 
           android:paddingTop="10dip" 
           android:layout_height="wrap_content" 
           android:layout_width="fill_parent">
     
          <TableRow>
          ...
          </TableRow>
     
          <View 
              android:layout_width="fill_parent" 
              android:layout_height="2dip" 
          </View>
     
          .... 
        </TableLayout 
     
     </HorizontalScrollView>

    Je veux que le widget View (qui est mon séparateur des widgets Row) prenne toute la largeur de l'écran... Or pour l'instant elle prend la même largeur que le Row le plus large (cette dernière ne faisant pas tous l'écran).

    Comment faire pour que le widget View prenne toute la largeur de l'écran dans ce cas là ?

    Merci d'avance

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Citation Envoyé par TsCyrille Voir le message
    Merci pour votre aide : les deux solutions marchent bien...

    Je vais utiliser un HorizontalScrollView qui correspond un peu plus à ce que je veux obtenir. Mais j'ai un petit souci avec ce widget :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <HorizontalScrollView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:scrollbars="none" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent">
     
        <TableLayout 
           android:paddingLeft="10dip" 
           android:paddingTop="10dip" 
           android:layout_height="wrap_content" 
           android:layout_width="fill_parent">
     
          <TableRow>
          ...
          </TableRow>
     
          <View 
              android:layout_width="fill_parent" 
              android:layout_height="2dip" 
          </View>
     
          .... 
        </TableLayout 
     
     </HorizontalScrollView>

    Je veux que le widget View (qui est mon séparateur des widgets Row) prenne toute la largeur de l'écran... Or pour l'instant elle prend la même largeur que le Row le plus large (cette dernière ne faisant pas tous l'écran).

    Comment faire pour que le widget View prenne toute la largeur de l'écran dans ce cas là ?

    Merci d'avance
    Peux tu ajouter l'image que tu imagine !

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Par défaut
    Ci joint une copie d'écran de mon problème...

    Dans ce cas là le scroll horizontal n'est pas nécessaire (il sera actif quand un de mes TextView sera plus large que l'écran : fonctionnement OK) mais je voudrais que le trait de séparation (widget View) prenne toute la largeur de l'écran)

    Merci d'avance
    Images attachées Images attachées  

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Citation Envoyé par TsCyrille Voir le message
    Ci joint une copie d'écran de mon problème...

    Dans ce cas là le scroll horizontal n'est pas nécessaire (il sera actif quand un de mes TextView sera plus large que l'écran : fonctionnement OK) mais je voudrais que le trait de séparation (widget View) prenne toute la largeur de l'écran)

    Merci d'avance
    Tu sais pourquoi il ne peut pas aller prendre toute la largeur de l'ecran?

    1. tu as mis le parametre FILL_PARENT ok : Ceci pour prendre la largeur totale de son parent. Or son parent c'est TableLayout et non l'ecran principale. Donc il va recuperer la largeur entiere de TableLayout. OK dans table Layout il y'a aussi FILL_PARENT qui va prendre la largeur total de son parent ( HorizontalScroll....)
    OK
    mais tu as mis le parametre padding ds TableLayout qui permet de mettre l'espace entre le borduire et le bord de l'ecran. Ce qui veut dire que ton TableLayout ne remplis pas l'ecran donc son fils (View) ne peut pas remplir l'ecran.

    Solution : Voici les trois alternatives que je te propose parmi une infinité :

    1. Tu enleve le paddinf à TableLayout et tu le mets à ses fils un a un sans le mettre à View.

    2. Tu definie la largeur en dure de ton View ( tu peux meme dire 500px) l'objectif c'est qu'il separe bien et atteint les bouts. Sauf que cette solution n'est pas professsionnel.

    3. Tu separe View et TableLAyout pour qu'il deviennent au meme niveau et avoir comme pere HorizontalScroll

  11. #11
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Par défaut
    J'ai essayé les trois solutions mais rien ne fait :

    1 - Même résultat
    2 - Même résultat (si j'applique une largeur à la View ou au TableLayout ou au Table Row : il garde la largeur du TextView le plus grand)
    3 - J'ai le message suivant : "IllegalStateException: HorizontalScrollView can host only one direct child"

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Par défaut
    désolé de remonter ce sujet quelques mois après, mais j'aurai aimé savoir s'il y avait des solutions pour que le texte d'un textview défile automatiquement sans le focus
    D'autant plus que désormais certains android phones n'ont pas de trackball...

    J'ai une listview qui comporte des textview, et j'aurai aimé qu'ils défilent tous en même temps...

    Si quelqu'un a une idée, merci beaucoup

Discussions similaires

  1. * Scroller uniquement Horizontalement sur JTextPane ?
    Par DreamNooby dans le forum NetBeans
    Réponses: 1
    Dernier message: 26/11/2012, 13h59
  2. ipad scrollview verticale et horizontale
    Par carn971 dans le forum Développement iOS
    Réponses: 0
    Dernier message: 30/12/2011, 09h25
  3. [ScrollViewer]Comment scroller une applic silverlight ?!
    Par Choucha dans le forum Silverlight
    Réponses: 4
    Dernier message: 19/02/2009, 15h15
  4. [debutant]empecher JScrollPane de scroller horizontalement
    Par Romain93 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 26/02/2007, 12h55
  5. VGA : synchro verticale (et horizontale ?)
    Par Blustuff dans le forum Assembleur
    Réponses: 19
    Dernier message: 21/06/2003, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo