2017-10-12 87 views
0

在我的应用程序中,用户可以在EditText中添加标签。点击“Enter”后,标签将被添加到屏幕上。每个标签可以有不同的长度。用户可以添加尽可能多的,他想要的。我想要的是:一个接一个的添加一个TextView。当他们填写一行时,它将开始一个新行,然后是另一行。像下面一样(两行TextViews):Android:如何在屏幕上动态添加和堆叠多个文字浏览

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

是否必须获取屏幕和每个TextView的宽度然后进行一些计算?还是有一个优雅的方式来做到这一点?

回答

1

您可以使用RelativeLayout作为容器,并且应该以编程方式添加TextView。在添加TextViews时,您需要计算屏幕宽度和每个TextViews宽度。如果最后添加的TextView宽度超过限制,则需要将其移至下一行。

你可以得到屏幕宽度象下面这样:

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; 
} 

但是,也有许多图书馆实现这一点。你不必从头开始。

https://github.com/Cutta/TagView

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

https://github.com/whilu/AndroidTagView

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

+0

这些库似乎都有自己的问题。我可能会以编程方式添加“TextView”。感谢您确认我必须获得TextViews和屏幕的宽度。希望我们有一个可以做我想要的东西的布局。 –

相关问题