2011-01-31 5 views

risposta

86
TextView pf = new TextView(context); 
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

o

parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
+1

qual è la differenza tra il quei due codici? –

+6

'android.view.ViewGroup $ LayoutParams non può essere lanciato su android.widget.LinearLayout $ LayoutParams' –

+0

beh, la differenza principale è che nel primo codice stiamo creando un nuovo TextView con le impostazioni già esistenti. Nella seconda, stiamo aggiungendo una vista esistente e stiamo anche impostando questi parametri. Per il problema del cast, penso che devi lanciare la classe corretta – Franco

53

c'è un altro modo per ottenere lo stesso risultato. Nel caso in cui è necessario impostare un solo parametro, ad esempio 'altezza':

TextView textView = (TextView)findViewById(R.id.text_view); 
ViewGroup.LayoutParams params = textView.getLayoutParams(); 
params.height = ViewGroup.LayoutParams.WRAP_CONTENT; 
textView.setLayoutParams(params); 
+0

Funziona alla grande. Se questo è fatto su 'LinearLayout', non sembra che' ll.invalidate() 'sia necessario. Perché? –

26

La soluzione più semplice per il cambiamento TextView larghezza WRAP_CONTENT

textView.getLayoutParams().width = LinearLayout.LayoutParams.WRAP_CONTENT; // For change `TextView` width to `WRAP_CONTENT` 
//textView.getLayoutParams().width = 200; // For change `TextView` width to 200 

Spero che questo aiuto

+3

Soluzione semplice e corretta, perché non sovrascrive altri parametri. – CoolMind

+0

Contrassegnato come anversa per eliminare in quanto è molto più semplice. – FrankKrumnow

+1

Questa è la soluzione migliore –