2012-08-30 5 views

Odpowiedz

29

Możesz to zrobić, korzystając z LayoutParams. Można je dodać do składników interfejsu Android, aby ustalić ich granice i położenie.

Przykładem (ustawienie LayoutParams na widok dziecka z RelativeLayout)

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //The WRAP_CONTENT parameters can be replaced by an absolute width and height or the FILL_PARENT option) 
params.leftMargin = 50; //Your X coordinate 
params.topMargin = 60; //Your Y coordinate 
childView.setLayoutParams(params); 

zwrócić uwagę, że typ LayoutParams musi być równa rodzica childview chcesz je dodać. (LinearLayout.LayoutParams dla LinearLayout, dla RelativeLayout itp.).

Ponadto zamiast childView.setLayoutParams(params); można również użyć ustawienia parentView.addView(childView,params);, aby ustawić Layoutparamy po dodaniu elementu do kontenera nadrzędnego.

UWAGA! Wartości współrzędnych podano w pikselach. Ponieważ jest to najlepsza praktyka, aby użyć wartości DP, aby zdefiniować swoje rozmiary interfejsu można użyć tego fragmentu kodu do konwersji DP pikseli:

private int getPixels(int dipValue){ 
    Resources r = getResources(); 
    int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, r.getDisplayMetrics()); 
    return px; 
} 
+0

dzięki Leon, to jest dokładnie to, czego potrzebuję. Dziękuję! – manojmore

+0

@manojmore can u pls wyślij mi kod demo dla tego. Próbowałem tego, ale nie otrzymuję wyniku. Coś jest nie tak myślę. –

+0

są te wartości w DP lub pikselach? –

0

aditionally powyżej (odpowiedź Leona Lucardie użytkownika), jeśli widok jest GroupView a gdy jej czym powinien widoku krawędzie, aby wyjść na zewnątrz ekranu, trzeba również umieścić:

params.rightMargin=currentRightMargin -yourX; 
params.bottomMargin=currentBottomMargin -yourY; 

w celu uniknięcia zakłóceń w obrębie wewnętrznej układu widoku za

0

można użyć http://nineoldandroids.com/ i mają wsparcie API z poziomu 1, w ten sposób :

ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0);