我正在创建一个表单,用户输入他/她的地址,当用户保存表单时,流程将转到另一个活动,其中用户的名称将一个显示在另一个之下。我正在使用TableLayout并在每个TableRow中有一个TextView,它显示了文本视图旁边的名称和ImageButton,可用于删除条目。现在,当我运行应用程序时,我只能在布局中看到TextView,ImageButton是不可见的。有人可以帮助我在哪里出错?
以下是我的代码的一部分:
if (requestCode == REC_INFO && resultCode == RESULT_OK && data != null) {
RecipientArray = (ArrayList<Person>) data
.getSerializableExtra("RecArray");
TableLayout tbl = new TableLayout(this);
TextView[] tv = new TextView[RecipientArray.size()];
ImageButton delete_btns[] = new ImageButton[RecipientArray.size()];
TableRow tr[] = new TableRow[RecipientArray.size()];
for (int i = 0; i < RecipientArray.size(); i++) {
tv[i] = new TextView(this);
tv[i].setBackgroundResource(R.drawable.fill_rece);
Person p = RecipientArray.get(i);
tv[i].setText(p.getName());
tv[i].setTextColor(Color.WHITE);
delete_btns[i] = new ImageButton(this);
delete_btns[i]
.setImageResource(R.drawable.ipad_postcare_landscape_from);
delete_btns[i].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tr[i] = new TableRow(this);
tr[i].addView(tv[i]);
tr[i].addView(delete_btns[i]);
tbl.addView(tr[i]);
}
recs_layout.addView(tbl);//I add the TableLayout to a RelativeLayout
}
答案 0 :(得分:1)
delete_btns[i] = new ImageButton(this);
delete_btns[i].setImageResource(R.drawable.ipad_postcare_landscape_from);
delete_btns[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Drawable d = delete_btns[i].getDrawable();
d.setBounds(0, 0, delete_btns[i].getWidth(), delete_btns[i].getHeight());
答案 1 :(得分:0)
我认为您的textview
占用了表格行中的所有空格,并尝试为此设置布局参数
例如:
tv[i].setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 2f));
类似于图像按钮
delete_btns[i].setLayoutParams(new TableRow.LayoutParams(
0, LayoutParams.WRAP_CONTENT,1f));
到表格行
tr[i].setWeightSum(3f)
此处float
类型的第三个参数是视图的权重,因为对于图像视图和textview,它都设置为1f
,它们将占用相等的空间,您可以更改它并将其设置为您需要。
对textview和imageview使用权重集宽度为0dp