我需要根据从服务器收到的信息显示TextViews。例如。我从服务器得到了7个字。我需要将每个单词放在不同的TextView中以使其可单击。文本视图应在行中从左到右填充设备的屏幕。到达右边框时,下一行TextView应放在下一行,依此类推。 TextViews的数量是可变的,Textviews中的单词也是不同的。
答案 0 :(得分:0)
为它们创建新的textView实例和setLayoutparams。
示例,
TextView[] tx = new TextView[10];
TableRow[] tr = new TableRow[10];
for(i=0; i<10; i++) {
tx[i] = new TextView(this);
tx[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tx[i].setText("Data")
tr[i] = new TableRow(this);
tr[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tr[i].addView(tx[i]);
// and then adding table row in tablelayout
}
答案 1 :(得分:0)
对于您的问题,您可以使用单个textview并将spannable字符串设置为textview 在该字符串中,您可以提供所需的点击次数。
答案 2 :(得分:0)
我找到了解决方案。 我不会把整个代码放在这里。只有主要部分。 有垂直的LinearLayout。 我们需要计算布局的宽度。我不能这样做因为我在绘制之前做了所有的计算。 我的屏幕宽度是陡峭的:
Display display = ((Activity) context).getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
float density = getResources().getDisplayMetrics().density;
float dpWidth = outMetrics.widthPixels / density;
int displayWidth = (int) dpWidth;
这是可用于放置Textviews的可用空间。 将LinearLayout添加到父级。创建Textview并计算宽度:
// Calculate size of the button
Rect bounds = new Rect();
Paint textPaint = menuCategoryTV.getPaint();
textPaint.getTextBounds(text, 0, text.length(), bounds);
int width = bounds.width();
然后检查是否有空间将Textview放置在布局中。为了从屏幕上的可用空间中扣除TextView的宽度。当然第一个textView有一个空间。直到你的TextView不是很长。但是在通过TextViews填充布局之后,将没有新元素的空间。创建新的LinearLayout,将其添加到父级并将可用空间重置为初始值。