Android i dynamiczny TableView

0

Witam, mam problem z tabelkami w Androidzie. Szukałem po tutorialach ale nie znalazłem niczego co pomogłoby mi rozwiazac problem. Mianowicie mam tabelke, ktora moge scrollowac ale jest problem z zamieszczeniem calej na ekranie. Mam 4 naglowki ale z racji ze zawartosc kolumn nieraz jest dluga to rozszerza mi je przez co w orientacji pionowej widac tylko 2 a poziomej 3 kolumny. Moglby ktos poratowac?

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <TableLayout
        android:id="@+id/table"
        android:layout_height="match_parent"
        android:layout_width="wrap_content">
    </TableLayout>

</ScrollView>
        TableLayout table = (TableLayout) findViewById(R.id.table);
        table.removeAllViewsInLayout();

        TableRow headerRow = new TableRow(getApplicationContext());

        ArrayList<String> headers = new ArrayList<>();
        headers.add("h1");
        headers.add("h2");
        headers.add("h3");
        headers.add("h4");

        for(int i = 0; i < headers.size(); i++) {
            TextView header = new TextView(getApplicationContext());
            header.setText(headers.get(i));
            header.setTextColor(Color.WHITE);
            header.setBackgroundColor(Color.rgb(24, 116, 205));
            header.setPadding(15, 15, 15, 15);
            header.setTextSize(20);

            headerRow.addView(header);
        }

        table.addView(headerRow);

        for (int i = 0; i < tlmJsonParserObj.getRecords().size(); i++) {
            Map<String, String> row = tlmJsonParserObj.getRecords().get(i);

            TableRow tr = new TableRow(getApplicationContext());

            String bgColor = "silver";
            if(i % 2 == 0) bgColor = "white";

            tr.setBackgroundColor(Color.parseColor(bgColor));

            ArrayList<String> cells = new ArrayList<>();
            cells.add(row.get("c1"));
            cells.add(row.get("c2"));
            cells.add(row.get("c3"));
            cells.add(row.get("c4"));

            for(int k = 0; k < cells.size(); k++) {
                TextView cell = new TextView(getApplicationContext());
                cell.setText(cells.get(k));
                cell.setTextColor(Color.BLACK);

                //cell.setBackgroundColor(Color.rgb(24, 116, 205));
                //cell.setPadding(10, 10, 10, 10);
                cell.setTextSize(15);

                tr.addView(cell);
            }

            table.addView(tr);

Wygląda to tak:

https://s3.amazonaws.com/aww-imagedata/81d03998-55af-4056-bdb0-0f9b8a21fe2e.png

A ja chcę, żeby w każdej orientacji wyświetlały się wszystkie kolumny i w razie czego łamało mi linie w kolejnych wierszach.

Pozdrawiam

0

Android Studio ma dołączony template MasterDetail - dokładnie to co próbujesz skołować.

0
_13th_Dragon napisał(a):

Android Studio ma dołączony template MasterDetail - dokładnie to co próbujesz skołować.

Czy aby na pewno? Ja chcę wyświetlić tabelkę z danymi a MasterDetail to chyba to boczne menu.

0

Niestety jeśli chodzi o dynamiczne widoki w Androidzie to jest to niestety bolączka. Generalnie będziesz musiał wziąć pod uwagę DPI, wymiary ekranów i orientacje i na tej podstawie robić layouty land/port, dimens na różne dpi a jak zapragniesz grafik to też będziesz musiał ich mieć sporo.

0
panryz napisał(a):

Niestety jeśli chodzi o dynamiczne widoki w Androidzie to jest to niestety bolączka. Generalnie będziesz musiał wziąć pod uwagę DPI, wymiary ekranów i orientacje i na tej podstawie robić layouty land/port, dimens na różne dpi a jak zapragniesz grafik to też będziesz musiał ich mieć sporo.

Zrobilem horizontal scrolla, niestety innej mozliwosci nie ogarnalem a mam pewnosc ze bedzie dobrze wygladalo na wszystkich ekranach

1 użytkowników online, w tym zalogowanych: 0, gości: 1