2011-12-29 4 views
2

У меня есть TableLayout в моем XML, и я бы хотел динамически добавить TableRow с 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 с TextView и ImageView в XML, он делает работу: harmjanr

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