J'ai dynamiquement créé une table remplie de clés et de valeurs de longueur variable.Redimensionner dynamiquement la largeur TextView dans TableLayout
Lorsque j'essaie de définir la largeur pour envelopper le contenu, la largeur est définie par rapport aux tailles de clé individuelles plutôt qu'à la table dans son ensemble. Le résultat est que le deuxième TextView est trop large une fois qu'une clé avec une plus grande largeur est ajoutée à la table.
J'ai essayé de redessiner la table après qu'elle soit terminée, mais les largeurs TextView d'origine sont conservées.
Existe-t-il une correction simple que j'ai ignorée ou dois-je programmer pour obtenir la largeur de clé la plus longue, puis définir manuellement une largeur maximale pour le second TextView?
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;
}
Résultat
Je ne sais pas cela fonctionnera comme la largeur de la TextView a déjà été défini. Je vais essayer demain et je vous le ferai savoir. – PassKit
Comme suspecté - la taille de TextView a déjà été déterminée par rapport à la largeur de l'autre TextView dans la ligne. Cette classe n'a donc eu aucun effet. – PassKit