Autore Topic: TableLayout: Aggiungere ScrollView e separator  (Letto 612 volte)

Offline markus988

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy N7100 Note II
  • Sistema operativo:
    Windows 7
TableLayout: Aggiungere ScrollView e separator
« il: 23 Luglio 2013, 11:58:00 CEST »
0
Salve a tutti, sto cercando di realizzare una Tabella interamente da codice, visualizzo correttamente tutti gli oggetti inseriti ma sono necessarie le barre di scorrimento e, magari, anche i separatori.

Dunque l'xml è un linearLayout vuoto (inizialmente questo file non esisteva nemmeno, fecevo il setContentView nel codice direttamente con il TableLayout poi ho pensato che potrebbe tornare utile proprio per le scrollview):
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/linearLayout1"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >
</LinearLayout>

Questo, invece, è il codice della classe:
Codice (Java): [Seleziona]
public class LineaAA extends Activity{

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                this.requestWindowFeature(Window.FEATURE_NO_TITLE);
                setContentView(R.layout.lineaaa_layout);
               
                LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout1);

                TableLayout tableLayout = new TableLayout(this);
                tableLayout.setLayoutParams(new TableRow.LayoutParams( TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT));
               

//              View separator = new View(this);
//              separator.setLayoutParams(new TableRow.LayoutParams( TableRow.LayoutParams.MATCH_PARENT, 1));
//              separator.setBackgroundColor(Color.rgb(0, 153, 102));
//              tableLayout.setStretchAllColumns(true);
               
                List<BusStop> lineaAA = new LinkedList<BusStop>();
                lineaAA = readBusStop("and_lineaaa.out");
               
                for (int i=0; i<lineaAA.size(); i++)
                {
                        // Creo una nuova riga
                        TableRow row = new TableRow(this);
                       
                        // Scrivo il nome
                        TextView name = new TextView(this);
                        name.setText(lineaAA.get(i).getName());
                        name.setTypeface(null, Typeface.BOLD);
                        row.addView(name);
                       
                        // Scrivo gli orari
                        TextView time = new TextView(this);
                        time.setText(lineaAA.get(i).printTimes());
                        row.addView(time);
                       
//                      // Creo una nuova riga per il separatore
//                      TableRow rowSeparator = new TableRow(this);
//                      rowSeparator.addView(separator);
                       
                        // Aggiungo la riga
                        tableLayout.addView(row);
//                      // Aggiungo il separatore
//                      tableLayout.addView(rowSeparator);
                }
                layout.addView(tableLayout);
        }

Come vedete, ho tentato di fare qualcosa di mia iniziativa (commentata) per il separator ma credo di non aver ben compreso il funzionamento del sistema di inserimento da codice, in particolare del setLayoutParams, in quanto ottengo una illegalStateException che mi suggerisce un RemoveView().

Il programma ha un target minimo: API 9 quindi escludo il metodi setDividerDrawable(), così come setHorizontalScrollBarEnabled(true) sembra non produrre alcun cambiamento.

Post unito: 25 Luglio 2013, 09:39:48 CEST
Auto Taggo come risolto, se dovesse servire a qualcuno:

Questo è il file .xml che permette di avere un tablelayout con entrambe le scroll bar:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/linearLayout1"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >

    <HorizontalScrollView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" >

        <ScrollView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" >

            <TableLayout
               android:id="@+id/TableLayout01"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:stretchColumns="0" >
            </TableLayout>
        </ScrollView>
    </HorizontalScrollView>

</LinearLayout>

E questa è la porzione di codice per inserire un separator:

Codice (Java): [Seleziona]
                                TextView separator = new TextView(this);
                                separator.setHeight(1);
                                separator.setBackgroundColor(Color.rgb(0, 153, 102));
                                separatorRow.addView(separator);
« Ultima modifica: 25 Luglio 2013, 09:39:48 CEST da markus988, Reason: Merged DoublePost »