动态添加ImageView到TableRow

时间:2011-12-29 15:30:15

标签: android

我的XML中有一个TableLayout,我想动态地将带有ImageView的TableRow添加到该TableLayout。到目前为止我所拥有的是:

TableRow tr = new TableRow(this);
ImageView imgView = new ImageView(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT);
imgView.setLayoutParams(lp);
imgView.setImageDrawable(getResources().getDrawable(R.drawable.icon_test));
tr.addView(imgView);
tlCollection.addView(tr);

我做错了什么?如果我想将Textview添加到同一个TableRow,它可以工作,但添加ImageView不起作用..

添加TextView的代码:

TextView myTextView = new TextView(this);

myTextView.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT,TableRow.LayoutParams.WRAP_CONTENT));
myTextView.setText("Test");
tr.addView(myTextView);

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

我使用LayoutInflater:

修复它
LayoutInflater inflater = getLayoutInflater();

TableRow row = (TableRow)inflater.inflate(R.layout.collection_row, tlCollection, false);

//fill textview
TextView content = (TextView)row.findViewById(R.id.txtCollection);
content.setText("Test");

//fill imageview
ImageView myImgView = ImageView)row.findViewById(R.id.imgCollection);           
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.my_icon));

//add row to tablelayout
tlCollection.addView(row);

答案 1 :(得分:0)

我认为这与布局参数有关。您将两个维度都设置为WRAP_CONTENT,但图像视图本身没有“内容”,它有一个源可绘制的。尝试使用adjustViewBounds,setScaleType和布局参数。请注意,在您能够添加TextView的示例中,您将宽度设置为FILL_PARENT?

我在这个以这种方式动态添加ImageView的开放项目中可以快速找到的唯一例子就是我在两个方向上都使用FILL_PARENT的情况。这可能不适合你,因为我没有完全相同,但值得玩这些设置以及上面提到的其他两个。

答案 2 :(得分:0)

试试这个

ImageView imgView = new ImageView(this);         imgView.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher));

tr.addView(imgView);

答案 3 :(得分:0)

我现在使用以下代码修复了同样的问题

CandFlag =new ImageView(this);
CandFlag.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                    TableRow.LayoutParams.WRAP_CONTENT));

CandFlag.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.flag));


LayoutParams layoutParams = (LayoutParams) CandFlag.getLayoutParams();
            layoutParams.width = 75;
            layoutParams.height = 75;
            CandFlag.setLayoutParams(layoutParams);

Tablerow.addView(CandFlag);