TableLayout mit colspan

  • 1 Antworten
  • Letztes Antwortdatum
F

Flixius

Fortgeschrittenes Mitglied
4
Hi,

ich möchte ein Tabellenlayout in android realisieren.

Die eine row hat ein textview, dass über die gesamte breite gehen soll.
Die zweite row soll zwei textviews beinhalten.

Das Problem: der TextView der ersten Row bricht automatisch an der Stelle um, an der der zweite TextView der zweiten row beendet.

Okay. das klingt kompliziert. Daher hier mal ein Screenshot: https://docs.google.com/file/d/0B4akOPvIFQMYTWQ4c3VoMUUxSnM/edit

Der dazugehörige Code sieht so aus:
Code:
LinearLayout mainLayout = new LinearLayout(this);
mainLayout.setOrientation(LinearLayout.VERTICAL);
 
mainTable = new TableLayout(this);
mainTable.setPadding(15, 45, 15, 15);
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.width = LayoutParams.MATCH_PARENT;
mainTable.setLayoutParams(params);
 
 
//header with span 2
TableRow r = new TableRow(this);
TableRow.LayoutParams p = new TableRow.LayoutParams();
p.width = LayoutParams.MATCH_PARENT;
r.setLayoutParams(p);
        
TextView headerTv = new TextView(this);
headerTv.setPadding(10, 0, 0, 0);
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.width = LayoutParams.MATCH_PARENT;
params.span = 2;
headerTv.setLayoutParams(params);
headerTv.setTextAppearance(this, android.R.style.TextAppearance_Holo_Medium);
headerTv.setText("Header Span = 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
r.setBackgroundColor(color);
r.addView(headerTv);
mainTable.addView(r);
 
//row with 2 columns
TableRow row = new TableRow(this);
row.setBackgroundColor(color);
TableRow.LayoutParams p = new TableRow.LayoutParams();
p.width = LayoutParams.MATCH_PARENT;
row.setLayoutParams(p);
        
TextView tv1 = new TextView(this);
tv1.setPadding(10, 0, 0, 0);
tv1.setText(s1);
        
TextView tv2 = new TextView(this);
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.width = LayoutParams.MATCH_PARENT;
tv2.setLayoutParams(params);
tv2.setBackgroundColor(Color.BLACK);
tv2.setText(s2);
        
row.addView(tv1);
row.addView(tv2);
        
mainTable.addView(row);

Ich suche schon eine ganze Weile nach der Lösung. Vielleicht hat ja hier jemand eine Idee.

Herzlichen Dank!
 
Habe dasselbe Problem gerade. Konntest du eine Lösung finden?

Der ursprüngliche Beitrag von 10:16 Uhr wurde um 10:48 Uhr ergänzt:

Lösung selbst gefunden. Die Gewichtung vom TextView muss auf 1 gesetzt werden. Also in der XML zB:

Code:
<TextView    
   android:id="@+id/textView"    
   android:layout_weight="1" />
oder im Code:
Code:
TableRow.LayoutParams colParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
colParams.weight = 1.0f;
 
Zurück
Oben Unten