Problème: Lorsque je sélectionne un fichier avec un long chemin d'accès ou le nom, il force les colonnes adjacentes à disparaître.
La mise en page xml tout les postes de la TableLayout
comme un espace réservé dans la Activity
et le code Java est utilisé pour créer le `TableRows et les vues comme nécessaires.
Ce que j'essaie de faire: Un utilisateur peut cliquer sur un bouton "Ajouter" pour sélectionner un fichier sur leur téléphone pour être ajouté comme un chemin d'accès et nom de fichier à un TableRow
au sein d'une TableLayout
. La première colonne comporte un bouton ( - ) pour éventuellement supprimer le nouvellement ajouté TableRow, et la deuxième colonne contient le chemin d'accès et nom de fichier.
Ce que j'ai essayé: j'ai l'impression que j'ai tout essayé par programmation réglage de divers LayoutParams
et soit Button
ou TextView
la largeur et la hauteur de paramètre pour définir une largeur fixe... au moins pour le bouton. Mais rien ne semble fonctionner. Quand je fais une recherche ici pour un exemple de programmation, c'est toujours la mise en page de code XML, pas le Java.
Je suis toujours en sorte de l'apprentissage de la Android, mais je suis bloqué sur ce et de la pensée de quelqu'un peut être en mesure de me pointer dans la bonne direction. Ci-dessous, quelques images et le code qui crée la TableRows et des vues à l'intérieur. Sens un peu stupide, je ne peux pas comprendre cela.
Avant d'ajouter
Après l'ajout d'
Code des méthodes dans une classe singleton qui créent l' Button
et TextView
vues de l' TableRow
et TableLayout
. Les premiers appels de méthode pour les deux autres ce qui crée le Bouton ad TextView
public static TableRow setupFilesTableRow(Context context, TableLayout table, String fileID, String fileName, boolean header) {
TableRow row = new TableRow(context);
if(header) {
row.addView(setupFilesAddRowButton(context, table));
row.addView(addRowTextViewToTable(context, fileName, true));
}else{
row.addView(setupDeleteRowButton(context, table));
for(int r=1; r < 2; r++){
row.addView(addRowTextViewToTable(context, fileName, false));
row.setClickable(true);
}
}
return row;
}
public static Button setupDeleteRowButton(Context context, TableLayout table){
Button btnDelete = new Button(context);
TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.MATCH_PARENT);
trLayoutParams.setMargins(3,3,3,3);
btnDelete.setBackgroundColor(Color.WHITE);
btnDelete.setLayoutParams(trLayoutParams);
btnDelete.setText("-");
btnDelete.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
btnDelete.setGravity(Gravity.CENTER);
btnDelete.setPadding(5,5,5,5);
btnDelete.setOnClickListener(v -> {
deleteTableRows(table);
});
return btnDelete;
}
public static TextView addRowTextViewToTable(Context context, String value, boolean bold){
TextView tv;
tv = new TextView(context);
TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams();
trLayoutParams.setMargins(3,3,3,3);
tv.setText(String.valueOf(value));
if(bold) tv.setTypeface(null, Typeface.BOLD);
tv.setLayoutParams(trLayoutParams);
tv.setTextSize(12);
tv.setGravity(Gravity.CENTER);
tv.setPadding(8,8,8,8);
tv.setBackgroundColor(Color.WHITE);
return tv;
}