我有一个LinearLayout,可以在其中以编程方式附加文本视图.问题在于文本视图和内容(每个视图中的一个单词)的数量是动态的.
如果当前行已填充,如何开始将下一个textview追加到新行?
想:
One Textview for each
word almost like a
page in a book
此示例应提供12个文本视图,在“ each”和“ a”之后添加新行,因为“ word”和“ page”要长到适合上一行.
我的代码是:
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
llp.setMargins(15, 0, 0, 0); // llp.setMargins(left, top, right, bottom);
for(int k=0; k<words.size(); k++)
{
TextView tv = new TextView(this);
tv.setTypeface(font);
tv.setText(words.get(k));
tv.setTextSize(20.0f);
tv.setLayoutParams(llp);
tv_holder_layout.addView(tv); //Add view to layout
wordTextViews.add(tv); //Add TextView to arraylist, to be able to find it later
}
“ tv_holder_layout”目前是简单的LinearLayout(水平)…
解决方法:
您将需要一个垂直的LinearLayout,它将容纳其他的LinearLayouts,它们每个都将代表一行.
您可以通过调用以下方法评估textview的宽度,然后再渲染它
view.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int width = view.getMeasuredWidth();
在知道宽度之后,您可以添加视图,具体取决于每行的宽度