Jak mogę uzyskać wartość marginesu widoku z działania? Widok może być dowolnego typu.
Po krótkich poszukiwaniach znalazłem sposoby na wypełnienie widoku, ale nie mogłem znaleźć niczego na Margin. Czy ktoś może pomóc?
Próbowałem czegoś takiego
ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
To działa, ale w powyższym kodzie założyłem, że jest to plik LinearLayout
. Ale muszę pobrać margin
atrybut, nawet jeśli nie znam typu widoku.
android
android-layout
android-view
Arnab Chakraborty
źródło
źródło
LayoutParams
. Są zajęcia, takie jakFrameLayout.LayoutParams
,RelativeLayout.LayoutParams
, ale nic takiegoLayoutParams
w sobie. A ponieważ nie znam typu widoku, nie mogę skorzystać z żadnej z poprzednich klas.ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
wtedy?Próbować
To zwróciło przynajmniej prawidłowe marginesy dla mojego widoku.
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
źródło
teraz użyj tego edytowanego kodu. to ci pomoże
źródło
LinearLayout
zhorizontal
orientacją. Jeśli jest to drugi widok w układzie,view.getLeft()
metoda podałaby mi współrzędne jego lewego, ale lewego marginesu widoku z sąsiedniego widoku.LinearLayout
?Jak sugerowali inni, layout_margin # to przestrzeń pomiędzy krawędzią rodzica # a Twoim widokiem.
Uzyskanie / ustawienie marginesów zadziałało dla mnie z:
Oczywiście mój widok był rzeczywiście ViewGroup, a rodzic był również ViewGroup. W większości przypadków powinieneś rzutować parametry swojego układu do klasy View elementu nadrzędnego LayoutParams (w tym przypadku jest to ViewGroup i RelativeLayout)
źródło