Problém: Když jsem se vybrat soubor s dlouhou cestu nebo název, síly sousedních sloupcích zmizí.
Rozvržení xml jen pozice TableLayout
jako zástupný symbol v Activity
a kód v jazyce Java se používá k vytvoření `TableRows a názory podle potřeby.
To, co se snažím dělat: uživatel může klikněte na tlačítko "Přidat" a vyberte soubor na svém telefonu, které mají být přidány jako cestu a název souboru do TableRow
v TableLayout
. První sloupec obsahuje tlačítko ( - ) volitelně odstranit nově přidané TableRow, a druhý sloupec obsahuje cestu a název souboru.
Co jsem zkoušel: mám pocit, že jsem se snažil všechno, co programově nastavení různých LayoutParams
a to buď Button
nebo TextView
šířka a výška parametr nastavit pevnou šířku... alespoň pro tlačítko. Ale nic, zdá se do práce. Když jsem se hledat zde pro příklad programování, je vždy rozvržení XML kód, není Java.
Ještě jsem se učit Android, ale zasekl jsem se na to a myslel, že někdo může být schopen místo mě správným směrem. Níže jsou uvedeny některé obrázky a kód, který vytvoří TableRows a výhled do. Připadám docela hloupě nemůžu na to přijít.
Před přidáním
Po přidání
Kód metod v rámci singleton třídy, které vytvářejí Button
a TextView
výhled na TableRow
a TableLayout
. První volání metody další dva, které vytvářejí Tlačítko 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;
}