Autore Topic: Distanza TableRow in modo programmatico  (Letto 767 volte)

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Distanza TableRow in modo programmatico
« il: 06 Settembre 2012, 19:27:17 CEST »
0
Ciao a tutti...

Come si fa a distanziare le righe di un TableLayout????
Posto il codice con i vari tentativi ...
La tableLayout è definita in xml
Codice (XML): [Seleziona]
<ScrollView    
     
       android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1">
       
         <RelativeLayout
            android:id="@+id/relative6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
     
            >    
   
         
        <TableLayout
            android:id="@+id/tabella_risultati"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="1"
            android:paddingTop="20dip"
           android:layout_marginLeft="5dip"
            android:layout_marginRight="5dip"
            >
       </TableLayout>  
   </RelativeLayout>
 </ScrollView>

Codice Java
Codice (Java): [Seleziona]
//definisco la tabella risultati
TableLayout tabellaRisultati = (TableLayout) findViewById(R.id.tabella_risultati);  

           
            if (c.moveToFirst()){
               
                 do {
                         
                         
                         
                         TableRow riga_dainserire = new TableRow(this);
                         
                     
                         TableRow.LayoutParams llp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);

        //***********PRIMO TENTATIVO ... SETTO I MARGINI DEL LayoutParams MA NON SUCCEDE NULLA            

                     // llp.setMargins(0, 90, 0, 0); // llp.setMargins(left, top, right, bottom);

                     
                      riga_dainserire.setBackgroundResource(R.drawable.my_shape);
                      riga_dainserire.setLayoutParams(llp);
    //***********SECONDO TENTATIVO ... SETTO I PADDING DELLA RIGA MA NON SUCCEDE NULLA      
                     
                      riga_dainserire.setPadding(0, 0, 0, 10); // llp.setMargins(left, top, right, bottom);

                      riga_dainserire.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
                     
                      TextView txt = new TextView(this);
                         

                 
                       LayoutParams llp1 = new LayoutParams(LayoutParams.WRAP_CONTENT, 70);

                       llp1.setMargins(5, 0, 0, 0); // llp.setMargins(left, top, right, bottom);
                     
                         txt.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
                     
                     
                        txt.setLayoutParams(llp1);
               
                         setta_colore_font(txt);
                 
                        riga_dainserire.addView(txt);
                 
                     TextView go = new TextView(this);
                 
                     LayoutParams llp2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

                      llp2.setMargins(0, 0, 7, 0); // llp.setMargins(left, top, right, bottom);
                     
                      go.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
                     
                      go.setLayoutParams(llp2);
                     
                     
                      setta_colore_font(go);
                     
                      riga_dainserire.addView(go);
                 
                 
                      LayoutParams llp3 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    //***********TERZO TENTATIVO ... SETTO I MARGINI DELLA TABELLA QUANDO VIEN MESSA LA RIGA MA NON SUCCEDE NULLA      
                    //  llp3.setMargins(0, 10, 0, 0); // llp.setMargins(left, top, right, bottom);
 //***********QUARTO TENTATIVO ... SETTO I PADDING DELLA TABELLA QUANDO VIEN MESSA LA RIGA MA NON SUCCEDE NULLA      
         
                      tabellaRisultati.setPadding(0, 5, 0, 0);
                      tabellaRisultati.addView(riga_dainserire,llp3);
                 
                     

       
                 }while(c.moveToNext());
               
            }

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Distanza TableRow in modo programmatico
« Risposta #1 il: 14 Settembre 2012, 11:04:29 CEST »
0
Ok dopo lungo tempo ho trovato da sola la mia risposta ..!! :)

Codice (Java): [Seleziona]
 TableRow.LayoutParams llp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);

                      int px = Math.round(dp2px(10, this));
                     
                      llp.setMargins(0, px, 0, 0); // llp.setMargins(left, top, right, bottom);

  // .. .. .. .. .. .. faccio tutto quello che devo fare nel ciclo for

 LayoutParams llp3 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

  tabellaRisultati.addView(riga_dainserire,llp3);
                 
    tabellaRisultati.getChildAt(i).setLayoutParams(llp);
                 

la funzione dp2px è una funzione che trasforma i dp in pixel. Questa funzione è stata scritta già sul forum ma in ogni caso la riposto:

Codice (Java): [Seleziona]
float dp2px(int dip, Context context){
        float scale = context.getResources().getDisplayMetrics().density;
        return dip * scale + 0.5f;

        }