Sorun: Uzun bir yol veya ada sahip bir dosya seçtiğimde, bitişik sütunları kaybolmaya zorlar.
Düzen xml sadece konumlandırır TableLayout
bir yer tutucu olarak Activity
ve Java kodu `TableRows ve görünümleri gerektiği gibi oluşturmak için kullanılır.
Ne yapmaya çalışıyorum: Bir kullanıcı, telefonunda bir dosyaya yol ve dosya adı olarak eklenecek bir dosya seçmek için bir "Ekle" düğmesini tıklayabilir. TableRow
bir içinde TableLayout
. İlk sütunda yeni eklenen Tablerow'u isteğe bağlı olarak kaldırmak için bir düğme ( - ) bulunur ve ikinci sütunda yol ve dosya adı bulunur.
Ne denedim: Her şeyi programlı olarak ayarlamayı denediğimi hissediyorum LayoutParams
ve ya Button
veya TextView
sabit bir genişlik ayarlamak için genişlik ve yükseklik parametresi... en azından düğme için. Ama hiçbir şey işe yaramıyor gibi görünüyor. Burada bir programlama örneği aradığımda, her zaman Java değil, düzen XML kodudur.
Hala Android'i öğreniyorum ama bu konuda sıkışıp kaldım ve birisinin beni doğru yöne yönlendirebileceğini düşündüm. Aşağıda bazı resimler ve içindeki tabloları ve görünümleri oluşturan kod bulunmaktadır. Ben bunu anlayabilirsem aptal hissediyorum tür.
Eklemeden önce
Ekledikten sonra
Bir singleton sınıfı içindeki kod yöntemleri Button
ve TextView
için görünümler TableRow
ve TableLayout
. İlk yöntem, ad TextView Düğmesini oluşturan diğer ikisini çağırır
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;
}