2012-08-30 13 views
15

tôi đang làm việc trên api8 android. tôi muốn định vị/đặt chế độ xem trên màn hình động. nhưng để sử dụng setX và setY, chúng tôi cần API cấp 11 trở lên. làm thế nào chúng ta có thể sử dụng nó trong API 8 hoặc có bất kỳ thay thế cho điều này? cần trợ giúpAndroid - Sử dụng view.setX() và setY trong api 8

Trả lời

29

Bạn có thể thực hiện việc này bằng cách sử dụng LayoutParams. Đây có thể được thêm vào các thành phần của giao diện Android để đặt giới hạn và vị trí của chúng.

Một ví dụ (thiết lập LayoutParams trên một cái nhìn con của một 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); 

Hãy lưu ý rằng các loại của LayoutParams phải bằng phụ huynh của childview bạn muốn thêm chúng vào. (LinearLayout.LayoutParams cho số LinearLayout, RelativeLayout.LayoutParams cho số RelativeLayout v.v.). Bạn cũng có thể sử dụng parentView.addView(childView,params); để đặt bố cục khi mục được thêm vào vùng chứa chính

LƯU Ý! Giá trị của tọa độ bằng pixel. Vì nó là thực hành tốt nhất để sử dụng các giá trị DP để xác định kích thước giao diện của bạn, bạn có thể sử dụng đoạn mã này để chuyển đổi dp để pixels:

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

cảm ơn Leon, đó chính xác là những gì tôi cần. Cảm ơn bạn! – manojmore

+0

@manojmore u có thể gửi cho tôi mã demo cho this.I đã thử này nhưng không nhận được result.Something là sai tôi nghĩ. –

+0

là những giá trị này trong DP hoặc Pixels? –

0

aditionally để ở trên (câu trả lời Leon Lucardie của) nếu xem là một GroupView và khi nó được cho là các cạnh xem đi ra ngoài màn hình, bạn cũng phải đặt:

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

để tránh biến dạng trong cách bố trí bên trong quan điểm của

0

bạn có thể sử dụng http://nineoldandroids.com/ và có hỗ trợ API từ cấp 1, theo cách này :

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