2011-09-24 14 views
5

Ho visto molti post riguardanti l'aggiunta dinamica di righe di tabella, ma non sono sicuro di cosa mi manchi.Le righe della tabella aggiunte dinamicamente non vengono visualizzate

Quando eseguo quanto segue, non viene visualizzato nulla (a parte la barra del titolo dell'applicazione).

mio layout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
     android:id="@+id/table_view_test_main" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     > 
    <ScrollView 
      android:id="@+id/tvt_scroll" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      > 
     <RelativeLayout 
       android:id="@+id/tvt_scroll_relative" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
      <TableLayout 
        android:id="@+id/tvt_tableview" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        > 
      </TableLayout> 
     </RelativeLayout> 
    </ScrollView> 
</RelativeLayout> 

mia attività:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.table_view); 

    TableLayout tableLayout = (TableLayout) findViewById(R.id.tvt_tableview); 

    TableRow tableRow = new TableRow(this); 
    tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); 

    TextView column1 = new TextView(this); 
    column1.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    column1.setBackgroundColor(Color.YELLOW); 
    column1.setTextColor(Color.BLUE); 
    column1.setText("Col1 Value"); 
    tableRow.addView(column1); 

    TextView column2 = new TextView(this); 
    column2.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    column2.setBackgroundColor(Color.RED); 
    column2.setTextColor(Color.GREEN); 
    column2.setText("Col2 Value"); 
    tableRow.addView(column2); 

    tableLayout.addView(tableRow, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); 

    //tl.refreshDrawableState(); 
    //findViewById(R.id.tvt_scroll_relative).refreshDrawableState(); 
} 
+0

Interessante. Tutto ciò mi sembra buono (non che io sia assolutamente sicuro di nulla qui ...). Consiglierò di provare ad aggiungere dinamicamente altri 'TextView' agli altri layout sopra' TableLayout'. Vedi se riesci a far apparire * qualcosa *. Facci sapere come funziona. –

+0

rimuovere la tabella di rigaRow.setLayoutParams(); dopo aver istanziato TableRow, dovrebbe funzionare credo. Fammi sapere se funziona, in modo che io possa postarlo come soluzione. –

+0

@Yashwanth Kumar, rimuoverlo da solo non ha aiutato. Cambiando ViewGroup.LayoutParams a TableRow.LayoutParams o rimuovendoli completamente risolve il problema. – CrackerJack9

risposta

11

Cambiare i due riferimenti

ViewGroup.LayoutParams 

a

TableRow.LayoutParams

e dovrebbe funzionare.

L'aggiunta di parametri di layout a un widget richiede che lo LayoutParams sia una classe interna del contenitore di layout circostante.

+0

Grazie per la risposta, hai un riferimento per l'utilizzo della classe interna del contenitore di layout circostante? – CrackerJack9

+0

Ho avuto lo stesso problema e l'ho scoperto dopo un po 'di esperienza. Sarei interessato anche a qualche riferimento. –

1

Penso che questo abbia qualcosa a che fare con l'impostazione dei parametri di layout su TextView s. Se rimuovi quelle definizioni, vengono visualizzate le informazioni. Anche se si dà un'occhiata alla documentazione ufficiale per TableRow è possibile vedere:

The children of a TableRow do not need to specify the layout_width and layout_height attributes in the XML file. TableRow always enforces those values to be respectively MATCH_PARENT and WRAP_CONTENT.

+0

Non completamente vero, dato che è possibile impostare 'TableRow.LayoutParams.span', nel qual caso sarà necessario impostare' LayoutParam's. – CrackerJack9

Problemi correlati