【问题标题】:Add several textviews over multiple lines在多行上添加多个文本视图
【发布时间】:2015-02-26 04:46:20
【问题描述】:

我有一个 LinearLayout,我在其中以编程方式附加文本视图。问题是文本视图的数量和内容(每个视图中的一个单词)是动态的。 如果当前行已满,如何开始将下一个文本视图附加到新行?

希望:

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(水平)...

【问题讨论】:

  • 我理解你的问题,但你能告诉我你为什么要为每个单词使用单独的 TextView 吗?
  • 我猜每个字都有clickListener
  • 哦,对不起。单词要在一种拼图中找到,当找到一个单词时,我会在那个单词上加上一个删除线……

标签: android user-interface android-layout textview


【解决方案1】:

您将需要一个垂直的LinearLayout 来容纳其他LinearLayouts,每个LinearLayouts 将代表一条线。

您可以在渲染之前评估文本视图的宽度,方法是调用

view.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int width = view.getMeasuredWidth();

知道宽度后,您可以添加视图,具体取决于每行的宽度

【讨论】:

  • 您的意思是在垂直布局中添加带有文本视图的水平线性布局?然后我需要测量水平布局并添加到新textview的宽度...如果layout+textview>父宽度,那么添加新的水平布局...?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多