2013-03-26 20 views
30
TextView tv1 = new TextView(this);  
tv1.setPadding(5, 0, 5, 0); 
tv1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); 
tv1.setBackgroundColor(Color.parseColor("#0099cc")); 
tv1.setTextColor(Color.WHITE); 
tv1.setTextSize(11); 
tv1.setGravity(Gravity.LEFT | Gravity.BOTTOM); 
tv1.setText("Test1"); 
ll.addView(tv1); 

TextView tv2 = new TextView(this);  
tv2.setPadding(5, 0, 5, 0); 
tv2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); 
tv2.setBackgroundColor(Color.parseColor("#0099cc")); 
tv2.setTextColor(Color.WHITE); 
tv2.setTextSize(11); 
tv2.setGravity(Gravity.LEFT | Gravity.BOTTOM); 
tv2.setText("Test2"); 
ll.addView(tv2); 

Come potete vedere, in questa pace di codice ho impostato il colore di sfondo TextView. Quello che voglio fare è separare entrambi questi TextView gli uni dagli altri, in modo che i loro colori di sfondo siano separati da una linea. Non voglio che si colleghino. Come ho capito, sarebbe possibile farlo, se potessi impostare i margini di TextView, ma come so, gli TextView non sono in grado di farlo.Come impostare i margini per TextView a livello di codice?

+0

Dove si sta andando ad aggiungere questi textViews? – Triode

+0

Perché non sta aggiungendo vista nel file XML ... come questo

risposta

56

impostato su LayoutParams.

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.setMargins(10,10,10,10); 
tv1.setLayoutParams(params); 
+0

@SanjayKumar no, Il livello 1 dell'API può utilizzare questa chiamata. Ho fatto un esempio basato su questa risposta. controlla https://github.com/shanwu/shanwu_coding_base/tree/programatically_add_textview_example – shanwu

+0

io uso API 14 e funziona come un fascino – iversoncru

+0

In quale unità verrà impostato il margine, significa in dp, px, sp o qualcos'altro? –

0

utilizzare forme in Android. In forme qualcosa chiamato come stroke. Usando questo puoi vedere il bordo. fare riferimento a here e here.

tv1.setBackgroundResource(R.layout.your_shape); 

Penso che questo sia quello che vuoi. Quindi spero che questo ti possa aiutare.

Grazie.

0

Questo dovrebbe essere provato

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT); 
     params.setMargins(10,20,30,20); 
     txt_gender.setLayoutParams(params); 
Problemi correlati