2011-12-29 100 views
2

我在我的XML中有一个TableLayout,我想动态地添加一个TableLow与ImageView到该TableLayout。我到目前为止是这样的:动态添加ImageView到TableRow

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); 

任何想法?

回答

0

我固定它,使用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); 
0

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

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

+0

也不起作用。我将它们都设置为FILL_PARENT,但图像仍未显示。任何其他想法?问题是,当我加的TableRow与XML一个TextView和ImageView的,它的工作: harmjanr 2011-12-30 12:49:18

0

尝试这种

ImageView的imgView =新ImageView的(本); imgView.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher));

tr.addView(imgView);

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);