2011-01-02 14 views
15

Mam TableRows utworzony dynamicznie w kodzie i chcę ustawić marginesy dla tych TableRows.Programowo ustawiony margines dla TableRow

My TableRows stworzony następująco:

// Create a TableRow and give it an ID 
     TableRow tr = new TableRow(this);  
     tr.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     Button btnManageGroupsSubscriptions = new Button(this); 
     btnManageGroupsSubscriptions.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 40)); 

     tr.addView(btnManageGroupsSubscriptions); 
     contactsManagementTable.addView(tr); 

Jak dynamicznie ustawić marginesy dla nich?

Odpowiedz

61

Musisz poprawnie skonfigurować LayoutParams. Marża jest właściwością układu, a nie TableRow, więc musisz ustawić żądane marginesy w LayoutParams.

Herezje przykładowy kod:

TableRow tr = new TableRow(this); 
TableLayout.LayoutParams tableRowParams= 
    new TableLayout.LayoutParams 
    (TableLayout.LayoutParams.FILL_PARENT,TableLayout.LayoutParams.WRAP_CONTENT); 

int leftMargin=10; 
int topMargin=2; 
int rightMargin=10; 
int bottomMargin=2; 

tableRowParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin); 

tr.setLayoutParams(tableRowParams); 
+0

Pracowałem! Tnx !!! – ofirbt

+4

Co z tekstem? setMargins undefined dla textView. – Jaseem

+0

Nie działa. Ale odpowiedź @mika działała i powinna była być zaakceptowaną odpowiedzią. – Zvi

7

to działa:

TableRow tr = new TableRow(...); 
TableLayout.LayoutParams lp = 
new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 
          TableLayout.LayoutParams.WRAP_CONTENT); 

lp.setMargins(10,10,10,10);    
tr.setLayoutParams(lp); 

------ 

// the key is here! 
yourTableLayoutInstance.addView(tr, lp); 

Trzeba dodać TableRow do TableLayout ponownie przechodząc parametry układu!

+1

Powinna być zaakceptowaną odpowiedzią. Bez ostatniej linii w odpowiedzi nie działa ona "yourTableLayoutInstance.addView (tr, lp);". – Zvi

Powiązane problemy