Ich habe dynamisch eine Tabelle erstellt, die mit Schlüsseln und Werten unterschiedlicher Länge gefüllt wird.Größe von TextView in TableLayout dynamisch ändern
Wenn ich versuche, die Breite zum Umbrechen von Inhalt festzulegen, wird die Breite relativ zu den einzelnen Schlüsselgrößen und nicht zur Tabelle als Ganzes festgelegt.
Dies führt dazu, dass der zweite TextView zu breit wird, sobald ein Schlüssel mit einer größeren Breite zur Tabelle hinzugefügt wird.
Ich habe versucht, die Tabelle neu zu zeichnen, nachdem es abgeschlossen ist, aber die ursprünglichen TextView-Breiten bleiben erhalten.
Gibt es eine einfache Lösung, die ich übersehen habe, oder muss ich programmatisch die längste Schlüsselbreite erhalten, dann manuell eine maximale Breite für die zweite TextView festlegen?
layout.xml
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:scrollbars="none">
<TableLayout
android:id="@+id/passData"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="15dip">
</TableLayout>
</ScrollView>
activity.java
private TableRow generateRow(String key, String value, boolean isOdd) {
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
if (isOdd) {
tr.setBackgroundColor(getResources().getColor(R.color.colorTableRow));
}
TextView keyView = new TextView(this);
TextView valueView = new TextView(this);
keyView.setTypeface(null, Typeface.BOLD);
keyView.setPadding(30, 20, 30, 20);
keyView.setTextSize(15);
keyView.setText(firstCaps(key));
valueView.setText(value.replace(" ", "\u00A0"));
valueView.setSingleLine(false);
valueView.setMaxLines(20);
valueView.setPadding(0, 20, 30, 20);
valueView.setGravity(Gravity.CLIP_HORIZONTAL);
tr.addView(keyView);
tr.addView(valueView,new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT));
return tr;
}
Ergebnis
nicht sicher, dies ist wie die Breite funktionieren wird für die Textview bereits eingestellt wurde. Wir werden es morgen versuchen und dich wissen lassen. – PassKit
Wie vermutet - die Größe der TextView wurde bereits relativ zur Breite der anderen TextView in der Zeile bestimmt. Diese Klasse hatte daher keine Wirkung. – PassKit