使用TableRows的动态界面

时间:2012-07-31 09:35:28

标签: android user-interface dynamic android-tablelayout

我正在开发一个应用程序,它根据用户设置的字符串创建动态界面。

我在XML文件中唯一得到的是ScrollView,其余的是在java代码中:

ScrollView sv = (ScrollView)findViewById(R.id.sv);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TableLayout tl = new TableLayout(this);
TableRow[] tr = null;

然后我解读一个字符串,它会告诉我需要添加多少个按钮。每个Button旁边应该是TextView。在for循环中,我创建了ButtonsTextViews并将它们添加到TableRow,我添加到TableLayout,我添加到LinearLayout ScrollView 1}}我添加到Buttons

我的问题是:我希望TextView为200dp宽,然后是WRAP_CONTENT,但目前宽度为Button。使用RelativeLayoutsetLayoutParams设置TableRow的大小时,将其添加到final float scale = getBaseContext().getResources().getDisplayMetrics().density; int pixels = (int) (200 * scale + 0.5f); RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); rel_btn.height = pixels; rel_btn.width = pixels; btn.setLayoutParams(rel_btn); tr[i].addView(btn); tr[i].addView(tv); tl.addView(tr[i]); 时无效。

TableLayout

有没有人知道如何使用LinearLayouts解决问题?

我已经读过嵌套的{{1}}可能是一种不同的方法,但我似乎无法找到任何java示例,只有XML - 我需要它是动态的。

1 个答案:

答案 0 :(得分:0)

RelativeLayout.LayoutParamsButtonTextView的孩子时,使用TableRow的原因是什么?它应该是这样的:

TableRow.LayoutParams rel_btn = new TableRow.LayoutParams(pixels, pixels);
btn.setLayoutParams(rel_btn);

另外,你真的需要包裹LinearLayout的{​​{1}}吗?如果您没有将TableLayout用于其他内容,则应将其删除以改进视图层次结构。