2016-04-06 19 views
0

Für das Leben von mir kann ich nicht herausfinden, warum mein Text so endet. Ich bin neu in Java/Android-Programmierung, also entschuldige ich mich, wenn die Antwort für mich nicht offensichtlich scheint. Ich habe eine tablelayout mit einer statischen Reihe und den Rest dynamisch einprogrammiert. Die statische Reihe sieht gut aus, aber meine dynamische Reihe hat die 1. textview gequetscht, obwohl Gewicht für 1 für beide gesetzt wird textviews. Kann mir bitte jemand erklären, was ich mache/nicht mache?Textview und TableRow Gewichte funktionieren nicht richtig Android

XML:

<TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="16dp" 
     android:id="@+id/alchemist_favored_class"> 

     <TableRow> 

      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="Race" 
       android:gravity="left" 
       android:padding="2dp" /> 

      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="Bonus" 
       android:gravity="left" 
       android:padding="2dp" /> 

     </TableRow> 

    </TableLayout> 

Java:

//Populate Favored Class Options Table 
    TableLayout tableFC = (TableLayout) findViewById(R.id.alchemist_favored_class); 
    String[] fcr = getResources().getStringArray(R.array.alchemist_favored_class_race); 
    String[] fcd = getResources().getStringArray(R.array.alchemist_favored_class_detail); 

    TableRow.LayoutParams lp1 = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f); 
    TableRow.LayoutParams lp2 = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f); 

    for (int i = 0; i < fcr.length; i++){ 

     TableRow tr = new TableRow(this); 
     TextView tvFCR = new TextView(this); 
     TextView tvFCD = new TextView(this); 

     tr.addView(tvFCR); 
     tvFCR.setText(fcr[i]); 
     tvFCR.setSingleLine(true); 
     tvFCR.setPadding(2,2,2,2); 
     tvFCR.setLayoutParams(lp1); 

     tr.addView(tvFCD); 
     tvFCD.setText(fcd[i]); 
     tvFCD.setPadding(2,2,2,2); 
     tvFCD.setLayoutParams(lp2); 

     //Add background color to every other row. 
     if ((i % 2) == 0) { 
      tr.setBackgroundColor(Color.parseColor("#EEEEEE")); 
     } 

     tableFC.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT)); 

    } 

Ergebnis:

Imgur

+0

Warum Sie eine ‚Listview‘ nicht mit einer benutzerdefinierten Zeilenansicht verwenden? Wäre viel einfacher als das, was Sie tun ... – margabro

+0

Die Eltern sehen uns eine Bildlaufansicht. Wäre eine Listenansicht in einer Scroll-Ansicht nicht seltsam, wenn beide scrollbar sind? – Flakpanda

Antwort

0

Setzen Sie so etwas wie dieses -

tableFC.setStretchAllColumns(true); 

Hoffe, das hilft!

+0

Das Problem wurde nicht gelöst. Hat immer noch das gleiche Ergebnis wie im Bild. – Flakpanda

+0

Ist es möglich, die eine einzige 'TableLayout' über XML zu erstellen und dann 'TableRow' über XML/dynamisch hinzuzufügen, anstelle von zwei verschiedenen' TableLayout'. –

0

Durch Entfernen des Gewichts aus der ersten Textansicht in der Zeile wurde das Problem behoben und es wird jetzt wie gewünscht angezeigt.

Image