Nie rzucaj LinearLayout.LayoutParams do LinearLayout.LayoutParams. To nie ma sensu. Również nie jest jasne, czy linearLayout
w kodzie jest zmienną instancji ... Tak czy inaczej, możesz po prostu odwołać się do LayoutParams wewnątrz widoku, który rozciąga się od jakiegoś widoku, aby uzyskać LayoutParams widoku. Na przykład, jeśli jesteś wewnątrz klasy, która rozciąga się od RelativeLayout, następnie
LayoutParams params = new LayoutParams(200, LayoutParams.WRAP_CONTENT);
dostaje RelativeLayout.LayoutParams
. W przeciwnym razie musisz zakwalifikować się na LayoutParams
, którego szukasz. Aby uzyskać/zastosowanie LinearLayout LayoutParams, wystarczy
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams();
EDIT
linearLayout.getLayoutParams()
zwraca layoutParams
że dostarczane kiedy nazywa setLayoutParams
, więc najpierw upewnij się to zrobić. Następnie, gdy już to zrobisz, po prostu musisz rzucić LayoutParams
, które zostały zwrócone do LayoutParams
, którą ustawiłeś. więc
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) linearLayout.getLayoutParams()
Ponadto, dlaczego musisz uzyskać takie parametry? Co chcesz osiągnąć w ostateczności? Pytam, ponieważ może być łatwiejszy sposób robienia tego, co próbujesz zrobić ...
W efekcie odpowiedź na twoje pytanie brzmi TAK, musisz rzucić LayoutParams, które otrzymujesz z getLayoutParams, ponieważ jest to metoda wywodzi się z klasy View, która zwraca nadklasę LayoutParams, która jest ViewGroup.LayoutParams, która z powodu polimorfizmu może być rzutowana na typ, który znacie.
Niestety, typ zwracany przez linearLayout.getLayoutParams nie ma nic wspólnego z klasą układu, która zawiera ten linearLayout. Jeśli chodzi o wygodę, przyznanie mi klasy nadrzędnej "LayoutParams jest bezsensowne - jeśli tego potrzebuję, mogę rzucić linearLayout do ViewsGroup i wziąć jej getLayputParams i mieć je uniwersalne. Ale Android daje mi * tylko * ViewsGroup.LayoutParams. – Gangnus
Ponieważ jest niejednoznaczny, nie może zostać zwrócony określony typ LayoutParams, podczas gdy nie jest typowy. System nie może wiedzieć, jaki jest typ. Twoje pytanie jest dla mnie bezsensowne. – lulumeya
Jeśli linearLayout ma klasę LinearLayout, funkcja linearLayout.getLayoutParams jest klasą LinearLayout i może łatwo zwrócić klasę LinearLayout.LayoutParams. Gdzie jest błąd? – Gangnus