抱歉,如果问题信息不足。我正在为 ICS 编写应用程序。我决定使用 TableLayout 来创建一个网格,供用户单击其中的内容。对于每一行,我放入几个 TextView 和一个 ImageView,它们之间的每两个之间都有一个 1dp 垂直边框,所有这些都以编程方式在一个循环中完成。现在我让每个 TextView 都可以点击。当它被点击时,它的背景会变成一个蓝色的drawable。但是,我观察到可绘制对象并没有水平填充整个“网格”。我认为 ImageView 占用的空间可能比它应该占用的空间多(1dp)。我想出了或找到了许多方法来拉伸 TextViews,但都没有为我工作。有任何想法吗?提前致谢!
编辑:这是我正在使用的循环 - 我知道它有点复杂,所以我没有发布它:
for(int i=0; i<5; i++){
tr = new TableRow(ctxt);
tr.setGravity(Gravity.CENTER);
for(int j=0; j<6; j++){ //add the text from an array
tv = new TextView(ctxt);
tv.setText(a[6*i+j]:null);
tv.setTextSize(16);
tv.setPadding(0, 4, 0, 4);
tv.setGravity(Gravity.CENTER);
tv.setClickable(true);
tv.setBackgroundResource(R.drawable.list_selector_background);
tv.setTag(39+6*i+j);
tv.setOnClickListener(this);
tr.addView(tv, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 2.0f));
if(j<5){ //set the border
border = new ImageView(ctxt);
border.setImageResource(R.drawable.vert_border);
tr.addView(border, new LayoutParams(0, LayoutParams.MATCH_PARENT, 0.0f));
}
}
tl2.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, 48));
if(i<4){ //horizontal border
tr = new TableRow(ctxt);
tr.setMinimumHeight(1);
tr.setBackgroundColor(color.bg_gray);
tl2.addView(tr);
}
}