2013-04-16 2 views
1

Ниже приведены соответствующие биты кода:ImageView не появляется при добавлении к TableRow программным

<HorizontalScrollView 
     android:id="@+id/cards_scrollview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:fillViewport="false" > 

     <TableRow 
      android:id="@+id/cards_container" 
      android:layout_width="wrap_content" 
      android:layout_height="100dp" > 

      <ImageView 
       android:id="@+id/test_card" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingRight="@dimen/cards_distance" 
       android:adjustViewBounds="true" 
       android:src="@drawable/card_back" /> 

     </TableRow> 

</HorizontalScrollView> 

и

private void addCard(Drawable d) { 
     TableRow container = (TableRow) findViewById(R.id.cards_container); 
     ImageView card = new ImageView(this); 

     card.setAdjustViewBounds(true); 
     card.setPadding(R.dimen.zero, R.dimen.zero, R.dimen.cards_distance, R.dimen.zero); 
     TableRow.LayoutParams params = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     card.setLayoutParams(params); 
     card.setImageDrawable(d); 
     card.setVisibility(View.VISIBLE); 

     container.addView(card); 
} 

Я положительно уверен, что Drawable я пытаюсь добавить, а не null, имеет правильные границы, альфа установлена ​​на 255 и подходит правильно. Я протестировал это, применив его к test_card вместо того, чтобы пытаться добавить новый ImageViews, который отлично работает.

Есть ли что-нибудь, что мне не хватает здесь?

+0

прохода youractivty.this для контекста – edwin

+0

@edwin Метода является верхним уровнем в любом случае, но Я думаю, это хороший стиль, чтобы передать [Activity] .this. В моем случае ничего не улучшилось. – NoToast

ответ

1

После часа, проведенного с кодом, получается, что setPadding() фактически принимает ints, а не ссылки на ресурсы как аргументы, и это то, что испортило все это.

Поэтому в основном все, что мне нужно сделать, это изменить:

card.setPadding(R.dimen.zero, R.dimen.zero, R.dimen.cards_distance, R.dimen.zero);

в

card.setPadding(0, 0, 5, 0);