2017-10-12 18 views
0

Dans mon application, l'utilisateur peut ajouter une balise dans EditText. Après avoir appuyé sur "Entrée", l'étiquette sera ajoutée à l'écran. Chaque étiquette peut avoir différentes longueurs. L'utilisateur peut en ajouter autant qu'il le souhaite. Ce que je veux c'est: un TextView est ajouté après l'autre. Quand ils remplissent une ligne, il va commencer une nouvelle ligne, puis une autre rangée. (Comme ci-dessous deux rangées de TextViews):Android: Comment ajouter et empiler dynamiquement plusieurs textviews sur l'écran

"text 1","text 2","text 3","Another text" 
"one","Monday" 

Dois-je obtenir les largeurs de l'écran et chaque TextView puis faire quelques calculs? Ou y a-t-il une manière gracieuse de faire ceci?

Répondre

1

Vous pouvez utiliser un RelativeLayout en tant que conteneur et vous devez ajouter TextView s comme par programme. Lors de l'ajout de TextViews, vous devez calculer la largeur de l'écran et la largeur de chaque TextViews. Si la dernière largeur TextView ajoutée dépasse la limite, vous devez la déplacer vers la ligne suivante.

Vous pouvez obtenir Largeur de l'écran comme ci-dessous:

public static int getScreenWidth(Context ctx) { 
    int width = 0; 
    try { 
     DisplayMetrics metrics = new DisplayMetrics(); 
     WindowManager wm = (WindowManager) ctx 
       .getSystemService(Context.WINDOW_SERVICE); 
     wm.getDefaultDisplay().getMetrics(metrics); 
     width = metrics.widthPixels; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return width; 
} 

Mais, il y a beaucoup de bibliothèques pour y parvenir. Vous n'avez pas à faire cela à partir de zéro.

https://github.com/Cutta/TagView

https://github.com/kaedea/android-tagview

https://github.com/whilu/AndroidTagView

https://github.com/mcharmas/android-tagview

+0

Ces bibliothèques semblent tous avoir leurs propres problèmes. J'ajouterai probablement 'TextView' par programmation. Merci de confirmer que je dois obtenir des largeurs de TextViews et de l'écran. J'aurais aimé avoir une mise en page qui pourrait faire ce que je veux ici. –