Aller au contenu

[Résolu] Scroll un EditText avec la méthode scrollTo( int, int )


Dalc

Recommended Posts

Salut à tous,

J'ai un problème lorsque je veux scroller un EditText quand j'écris dans un autre.

En fait ce que je veux faire, c'est que quand je tape sur entrée dans un EditText et que la scrollbar de cet EditText descends, je veux que celle de l'autre EditText fasse la même chose

J'ai essayé : editText1.scrollTo( 0, editText2.getScrollY() );

Mais cela ne fonctionne que lorsque je le met dans le onTouchListener du premier EditText

Voilà si quelqu'un peux m'aider ? Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Bon, c'est pas ultra clair (genre un bout de code aurait aidé déjà :P ) mais de ce que j'en comprends, en gros, le scrolling de ton second editText (qui doit se réaliser en même temps que le premier) ne se fait que dans le touchListener. As-tu essayé de faire le scrolling dans un keyListener ? Enfin, mon idée ce serait d'avoir un keyListener et dans celui-ci, détecter la touche entrée et tester quel editText a le focus, si c'est le 1, on scroll le 2 et si c'est le 2 on scroll le 1.

Wala, c'est juste une idée, n'hésite pas à revenir dessus si ça marche (et si ça marche pas, mais avec un peu plus de détail :D ).

A plus ;)

Lien vers le commentaire
Partager sur d’autres sites

M'en doutais que ça allais pas être clair ^^'

Pour résumer je fais :

       // Ajout de listener( dans le onCreate de l'activity )
       editext1.setOnKeyListener( this );

       public boolean onKey(View v, int keyCode, KeyEvent event)
{
	if( event.getAction() == KeyEvent.ACTION_DOWN )
	{
		// Lors de l'appuie de la touche Entrée
		if( keyCode == KeyEvent.KEYCODE_ENTER )
		{
			editext2.scrollTo( 0, editText1.getScrollY() );
		}
               }
       }

Justement j'utilise onKeyListener sur un des deux EditText car un seul des deux doit scroller l'autre.

Et donc lorsque j'appuie sur entrée l'editext2 ne scroll pas :/

Sachant que les edittexts ont toujours le même nombre de lignes.

Merci

Lien vers le commentaire
Partager sur d’autres sites

Merci pour le code et l'éclaircissement ;)

As-tu vérifié (on sait jamais, je lance des pistes, ça peut peut-être aider ^^) si tu entres bien jusqu'à ton scrollTo, genre en mettant un log.v() juste avant ? C'est peut-être un problème de keycode.

Et sinon (mais là je ne pense pas que le problème vienne d'ici), n'oublie pas de retourner "true" juste après ton scrollTo() pour préciser que tu as géré l'event et "false" en dehors de ton if, à la fin du onKey() pour dire que tu ne l'as pas utilisé ;)

Lien vers le commentaire
Partager sur d’autres sites

Merci pour le code et l'éclaircissement ;)

As-tu vérifié (on sait jamais, je lance des pistes, ça peut peut-être aider ^^) si tu entres bien jusqu'à ton scrollTo, genre en mettant un log.v() juste avant ? C'est peut-être un problème de keycode.

Et sinon (mais là je ne pense pas que le problème vienne d'ici), n'oublie pas de retourner "true" juste après ton scrollTo() pour préciser que tu as géré l'event et "false" en dehors de ton if, à la fin du onKey() pour dire que tu ne l'as pas utilisé ;)

Alors, oui il entre bien jusqu'au scrollTo ^^

Et en fait à la fin de la méthode( car j'écoute d'autre touche aussi ) je retourne

return super.onKeyDown( keyCode, event );

J'ai testé en retournant true ou false mais cela n'a rien changé à part que le curseur ne descendait plus à la ligne d'en dessous ^^

Lien vers le commentaire
Partager sur d’autres sites

Alors, oui il entre bien jusqu'au scrollTo ^^

Et en fait à la fin de la méthode( car j'écoute d'autre touche aussi ) je retourne

return super.onKeyDown( keyCode, event );

J'ai testé en retournant true ou false mais cela n'a rien changé à part que le curseur ne descendait plus à la ligne d'en dessous ^^

J'ai bien l'impression que la méthode scrollTo ne marche pas, j'ai essayé sur mes deux editexts y en a aucun qui scroll. Ou alors il y a des conditions pour que cela marche je ne sais pas :s

EDIT: J'ai trouvé la solution sur stackoverflow en fait

			edittext2.post(new Runnable() {
		        @Override
		        public void run() {  
		        	edittext2.scrollTo(0, editext1.getScrollY() );
		        }
		    });

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...