2010-11-30 4 views
6

J'ai un EditText sur ma mise en page. Voici les attributs que j'ai actuellement:Activation de la barre de défilement dans EditText Android

<EditText 
    android:id="@+id/entryIdea" 
    android:layout_width="fill_parent" 
    android:layout_height="225sp" 
    android:gravity="top" 
    android:background="@android:drawable/editbox_background" 
    android:scrollbars="vertical"/> 

Cependant, je peux voir la barre de défilement mais ne peut pas la faire défiler avec la souris/contact. Je pensais que cela peut fonctionner si je mets l'écouteur correspondant, car il fonctionne sur TextView. Apparemment, ce n'est pas le cas.

EditText et = (EditText)findViewById(R.id.entryIdea); 
et.setMovementMethod(new ScrollingMovementMethod()); 

Pouvez-vous m'aider?

Merci beaucoup d'avance. Sammy

+2

vous devez passer par vos questions précédentes et marquer la meilleure réponse comme la bonne. –

+0

Il devrait être respectable une fois que vous avez assez de lignes dans le EditText, il doit donc être défilé. Vous n'avez pas besoin d'ajouter l'écouteur pour le faire fonctionner. Avez-vous essayé de le remplir de nombreuses lignes de texte? – Juhani

Répondre

7

Dans votre XML essayez de régler la hauteur EditText pas layout_height, mais plutôt utiliser android:lines attribut (BTW, en utilisant sp est généralement pas une bonne pratique lorsque vous définissez une taille pour tout sauf la taille de la police. L'utilisation dp/dip est plus naturel dans ce cas).

Entre temps, layout_height à wrap_content. Sinon le XML que vous avez présenté (avec les changements que j'ai mentionnés) a bien fonctionné pour moi même sans spécifier la méthode de mouvement dans le code.

Et bien sûr, la barre de défilement apparaîtra lorsque la quantité réelle de lignes de texte dans l'EditText est plus grande que celle indiquée dans l'attribut android: lines.

+0

Juste pour l'enregistrement, comme Coryffaeus (joli pseudo btw) a pointé, les barres de défilement ne montreront que si vous définissez l'attribut 'scrollbars' et vous surpassez le nombre de lignes spécifiées. dans 'lines', cependant, il défilera toujours même si vous ne l'avez pas défini. –

3

Envoyer cette link

EditText dwEdit = (EditText) findViewById(R.id.DwEdit);  
dwEdit.setOnTouchListener(new OnTouchListener() { 

      public boolean onTouch(View view, MotionEvent event) { 
       // TODO Auto-generated method stub 
       if (view.getId() ==R.id.DwEdit) { 
        view.getParent().requestDisallowInterceptTouchEvent(true); 
        switch (event.getAction()&MotionEvent.ACTION_MASK){ 
        case MotionEvent.ACTION_UP: 
         view.getParent().requestDisallowInterceptTouchEvent(false); 
         break; 
        } 
       } 
       return false; 
      } 
     }); 
2

utiliser ceci:

android:maxLines="5" 

attribut pour votre fichier xml. L'attribut scrollbars fonctionnera alors.

3
editText1.setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View view, MotionEvent event) { 
      // TODO Auto-generated method stub 
      if (view.getId() ==R.id.editText1) { 
       view.getParent().requestDisallowInterceptTouchEvent(true); 
       switch (event.getAction()&MotionEvent.ACTION_MASK){ 
       case MotionEvent.ACTION_UP: 
        view.getParent().requestDisallowInterceptTouchEvent(false); 
        break; 
       } 
      } 
      return false; 
     } 
    }); 
0

votre utilisation de fichier xml:

android:maxLines="5" 
1
editText1.setOnTouchListener(new OnTouchListener() { 

    public boolean onTouch(View view, MotionEvent event) { 
     // TODO Auto-generated method stub 
     if (view.getId() ==R.id.editText1) { 
      view.getParent().requestDisallowInterceptTouchEvent(true); 
      switch (event.getAction()&MotionEvent.ACTION_MASK){ 
      case MotionEvent.ACTION_UP: 
       view.getParent().requestDisallowInterceptTouchEvent(false); 
       break; 
      } 
     } 
     return false; 
    } 
}); 
0

dans l'utilisation du fichier xml:

android: MaxLines = "5" android: scrollbars = "vertical"

et dans le fichier .java ajouter

edt_text.setMovementMethod (new ScrollingMovementMethod());

Questions connexes