J'ai créé un TableLayout dynamique dans Android. Le problème est, il y a un vide inutile dans la colonne. Je voudrais l'enlever, j'ai changé le code plusieurs fois mais les résultats sont étonnants. Voici le meilleur que je peux obtenir en ce moment.Redimensionner dynamique TableLayout dans android
Comme vous pouvez le voir, il y a une lacune dans l'en-tête et aussi dans la ligne si la ligne se composant 2 + lignes. Je souhaite que la première colonne (Items) ait la plus longue largeur tandis que l'autre colonne enveloppe simplement le contenu avec l'en-tête.
ici est le XML
<TableLayout
android:id="@+id/tableDescription"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="*">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="4">
<TextView
android:layout_width="@dimen/size0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:padding="@dimen/size5"
android:text="@string/items" />
<TextView
android:layout_width="@dimen/size0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:padding="@dimen/size5"
android:text="@string/quantity" />
<TextView
android:layout_width="@dimen/size0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:padding="@dimen/size5"
android:text="@string/unitPrice" />
<TextView
android:layout_width="@dimen/size0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:padding="@dimen/size5"
android:text="@string/total" />
</TableRow>
</TableLayout>
Et voici le code pour rendre la ligne dynamique
private void init() {
// Array for item
String[] valuesItem = new String[] {
"Room asd",
"Room qwewq",
"Room kadskadskl",
"Room oeqwoeqwo",
"Room uuawuwauaw" };
final ArrayList<String> listItem = new ArrayList<String>();
for (int i = 0; i < valuesItem.length; ++i) {
listItem.add(valuesItem[i]);
}
// Array for quantity
String[] valuesQuantity = new String[] {
"1",
"1",
"2",
"1",
"2" };
final ArrayList<String> listQuantity = new ArrayList<String>();
for (int i = 0; i < valuesQuantity.length; ++i) {
listQuantity.add(valuesQuantity[i]);
}
// Array for price
String[] valuesPrice = new String[] {
"10",
"10",
"20",
"50",
"30" };
final ArrayList<String> listPrice = new ArrayList<String>();
for (int i = 0; i < valuesPrice.length; ++i) {
listPrice.add(valuesPrice[i]);
}
// Array for total
String[] valuesTotal = new String[] {
"10",
"10",
"40",
"50",
"60" };
final ArrayList<String> listTotal = new ArrayList<String>();
for (int i = 0; i < valuesTotal.length; ++i) {
listTotal.add(valuesTotal[i]);
}
for (int i = 0; i <valuesItem.length; i++) {
TableRow row= new TableRow(getActivity());
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT);
row.setLayoutParams(lp);
TextView item = new TextView(getActivity());
TextView quantity = new TextView(getActivity());
TextView price = new TextView(getActivity());
TextView total = new TextView(getActivity());
item.setText(valuesItem[i]);
quantity.setText(valuesQuantity[i]);
price.setText(valuesPrice[i]);
total.setText(valuesTotal[i]);
item.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
(getActivity().getResources().getDimensionPixelSize(R.dimen.size5)),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
quantity.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
price.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
total.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
item.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
quantity.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
price.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
total.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
item.setBackgroundResource(R.drawable.cell_shape);
quantity.setBackgroundResource(R.drawable.cell_shape);
price.setBackgroundResource(R.drawable.cell_shape);
total.setBackgroundResource(R.drawable.cell_shape);
row.addView(item);
row.addView(quantity);
row.addView(price);
row.addView(total);
tableDynamic.addView(row);
}
}
Désolé si c'est un peu en désordre. Merci!