Ako môžem nastaviť TableRow bunky šírkach v TableLayout programmaticallly?

0

Otázka

Problém: Keď som vyberte súbor s dlhou cestou alebo názov, núti priľahlých stĺpcoch, aby zmizli.

Rozloženie xml len pozíciách TableLayout ako zástupný v Activity a Java kód sa používa na vytvorenie `TableRows a názory, ako je potrebné.

To, čo sa snažím robiť: používateľ môže kliknite na "Pridať" tlačidlo pre výber súboru v telefóne, ak chcete byť pridané ako cestu a názov súboru do TableRow v rámci TableLayout. Prvý stĺpec má tlačidlo ( - ) voliteľne odstrániť novo pridané TableRow, a druhý stĺpec obsahuje cestu a názov súboru.

To, čo som sa snažil: mám pocit, že som sa snažil všetko, čo programovo úprava rôznych LayoutParams a buď Button alebo TextView šírka a výška parameter na nastavenie pevnej šírky... aspoň na tlačidlo. Ale nič nepomohlo. Keď som hľadať tu pre programovanie príklad, to je vždy rozloženie XML kód, nie Java.

Som stále druhu učenia Android, ale som uviazol na to a myslel, že niekto môže byť schopný miesto ma správnym smerom. Nižšie sú uvedené niektoré obrázky a kód, ktorý vytvára TableRows a názorov v rámci. Pocit, druh hlúpy nemôžem prísť na túto von.

Pred pridaním

before adding

Po pridaní

after adding

Kód metódy v singleton triedy, ktoré vytvárajú Button a TextView názory na TableRow a TableLayout. Prvý spôsob volania na ďalšie dve, ktoré vytvárajú Tlačidlo 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;
    }
android android-tablelayout tablerow
2021-11-17 20:22:02
1

Najlepšiu odpoveď

0

Potom, čo som sa naučil používať termín "dynamický" namiesto "programové", som bol schopný nájsť nejakú pomoc, a ako výsledok, vyriešiť môj problém. Nasledujúci odkaz uvedený základ pre mňa odvodiť riešenie na môj problém. Nižšie odkaz je moje riešenie v odpovedi na túto otázku.

Inšpiroval zdroj: http://mangoprojects.info/android-2/creating-a-tablelayout-dynamically-in-android/

Riešenie: som nedokázal aplikovať LayoutParams na deklaráciu TableRow. Raz som pridal týchto parametrov, by som mohol použiť TableRow.LayoutParams pomôcť definovať a ovládať jednotlivé Button a TextViews pomocou .weight a .height parametre v mojom konkrétnom prípade. Pozrite si aktualizovaný kód a pic výsledky.

Vizuálny Výsledok Kód Aktualizácia

Result

Kód Aktualizácie setupFilesTableRow

    TableRow row = new TableRow(context);
    LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
    row.setLayoutParams(ll);

Kód Aktualizácie setupDeleteRowButton (pridávanie hmotnosť a výška pomohol)

    Button btnDelete = new Button(context);
    TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT);
    trLayoutParams.setMargins(3,3,3,3);
    trLayoutParams.weight = 1;
    trLayoutParams.height =75;
    btnDelete.setLayoutParams(trLayoutParams);

Kód Aktualizácie addRowTextViewToTable*

    TextView tv;
    tv = new TextView(context);
    TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);
    trLayoutParams.setMargins(3,3,3,3);
    trLayoutParams.weight = 5;
    tv.setLayoutParams(trLayoutParams);
2021-11-18 20:41:45

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................