我有一个LinearLayout,我以编程方式附加textviews。问题是文本视图和内容(每个视图中的一个单词)的数量是动态的。 如果当前行已填满,如何开始将下一个textview附加到新行?
想要:
One Textview for each
word almost like a
page in a book
此示例应该提供12个textviews,在“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
(水平)......
答案 0 :(得分:3)
您需要一个垂直LinearLayout
来保存其他LinearLayout
,每个view.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int width = view.getMeasuredWidth();
代表一行。
您可以在通过调用
进行渲染之前评估textview的宽度{{1}}
知道宽度后,您可以添加视图,具体取决于每行的宽度