2013-12-07 5 views
0

У меня есть TableLayout в xml, и я хочу добавить строки в него программно.Представления динамически добавлены в TableLayout, не показывающие

Это мой код:

LinearLayout deckBuilder = (LinearLayout) getLayoutInflater().inflate(R.layout.deckbuilder, null); 

TableLayout deckGrid = new TableLayout(this.getApplicationContext()); 

    int rows = getResources().getInteger(R.integer.deckbuilder_grid_rows); 
    int columns = getResources().getInteger(R.integer.deckbuilder_grid_columns); 

    deckGrid.setWeightSum(rows); 

    for (int i = 0; i < rows; ++i) { 
     TableRow row = new TableRow(this.getApplicationContext()); 
     for (int j = 0; j < columns; ++j) { 
      ImageView iv = new ImageView(this.getApplicationContext()); 
      row.addView(iv); 
      iv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1)); 
      iv.setImageResource(R.drawable.my_image); 
     } 
     deckGrid.addView(row); 
     row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT, 1)); 
    } 
    deckBuilder.addView(deckGrid); 
    deckGrid.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 

Проблема заключается в том, что взгляды, которые я добавил в моих рядах не отображаются, строки сами не отображаются либо.

Ряды: 3, колонны: 5.

Здесь вы XML для deckbuilder:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/deckbuilder_background" 
    android:orientation="vertical" > 
</LinearLayout> 
+0

Привет, во-первых, вы не должны использовать applicationCOntext для создания компонентов пользовательского интерфейса, а во-вторых, вы распечатали значение строк и столбцов, если да, пожалуйста, сообщите нам номера, и нам было бы намного легче помочь вам если вы добавите сюда, xml для deckbuilder – Cata

ответ

0

Я полагаю, что ваш код находится внутри класса, который простирается Activity.

Таким образом, вы должны поставить

setContentView(deckBuilder); 

после последней строки, чтобы показать LinearLayout.

Кроме того, внутри a Activity Вы можете использовать непосредственно this вместо this.getApplicationContext().

+0

setContentView (deckBuilder) выполняется в начале класса. Я попытался использовать 'this' вместо this.getApplicationContext(), но он все еще не работал –

+0

Попробуйте отправить больше кода. В моем устройстве это работает ... – xonya

Смежные вопросы