Problema: Quando seleziono un file con un lungo percorso o nome, le forze di colonne adiacenti a scomparire.
Il layout xml con le posizioni TableLayout
come segnaposto nell' Activity
e il codice Java è utilizzato per creare il `TableRows e viste come necessarie.
Quello che sto cercando di fare: Un utente può fare clic su un pulsante "Aggiungi" per selezionare un file sul proprio telefono per essere aggiunto come un percorso e un nome file per un TableRow
all'interno di un TableLayout
. La prima colonna ha un pulsante ( - ) se si desidera rimuovere appena aggiunto TableRow, e la seconda colonna contiene il percorso e il nome del file.
Quello che ho provato: ho la sensazione che ho provato di tutto a livello di programmazione, regolazione di varie LayoutParams
e Button
o TextView
la larghezza e l'altezza parametro per impostare una larghezza fissa... almeno per il pulsante. Ma nulla sembra funzionare. Quando faccio una ricerca qui per un esempio di programmazione, è sempre il layout XML codice, non il Java.
Io sono ancora il tipo di apprendimento Android ma mi sono bloccato su questo e ho pensato che qualcuno potrebbe essere in grado di mi punto nella giusta direzione. Qui di seguito sono alcune immagini e il codice che crea la TableRows e viste all'interno. Sento un po ' stupido io non riesco a capire questo fuori.
Prima di aggiungere
Dopo l'aggiunta di
Codice di metodi all'interno di una classe singleton che creare il Button
e TextView
vista la TableRow
e TableLayout
. Il primo metodo chiamate agli altri due che creare il Pulsante ad una 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;
}