2011-01-31 16 views

Odpowiedz

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

lub

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

jaka jest różnica między te dwa kody? –

+6

'android.view.ViewGroup $ LayoutParams nie można przesyłać do android.widget.LinearLayout $ LayoutParams' –

+0

Cóż, główną różnicą jest to, że w pierwszym kodzie tworzymy nowy TextView z tymi ustawieniami. W drugim dodajemy do istniejącego widoku, a także ustawiamy te parametry. W przypadku problemu z obsadą, myślę, że musisz obsłużyć odpowiednią klasę. – Franco

53

Nie ma innego sposobu, aby osiągnąć ten sam rezultat. W przypadku trzeba ustawić tylko jeden parametr, na przykład „height”:

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

To działa świetnie. Jeśli jest to zrobione na 'LinearLayout', to nie wydaje się, że' ll.invalidate() 'jest konieczne. Czemu? –

26

Najprostszym rozwiązaniem dla zmian TextView szerokość do 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 

Nadzieja ta pomoc

+3

Proste i właściwe rozwiązanie, ponieważ nie zastępuje innych parametrów. – CoolMind

+0

Oznaczono moją anwer do usunięcia, ponieważ jest to znacznie prostsze. – FrankKrumnow

+1

To jest najlepsze rozwiązanie –

Powiązane problemy