2010-08-21 21 views
38

Nếu AbsoluteLayout không được dùng nữa thì tôi có thể sử dụng gì thay cho nó?Thay thế cho AbsoluteLayout trong Android?

Tôi đã thực hiện một ứng dụng sử dụng AbsoluteLayout nhưng nó không hoạt động tốt với các độ phân giải màn hình khác nhau. Tôi sử dụng vì tôi có thể đặt vị trí X và Y của một nút. Tôi có thể đặt vị trí của một nút bằng bố cục khác không?

+3

Bạn sẽ được phục vụ tốt hơn mô tả những gì bạn đang cố gắng đạt được. Một phần lý do 'AbsoluteLayout' không được chấp nhận vì nó không hỗ trợ nhiều kích thước màn hình tốt. Bất kỳ hệ quả trực tiếp nào đối với 'AbsoluteLayout' (ví dụ:' FrameLayout' có lề) sẽ chịu cùng một vấn đề. Bạn nên bắt đầu bằng cách tìm kiếm các giải pháp khác cho vấn đề của bạn, những vấn đề sẽ hoạt động tốt hơn với một loạt các thiết bị. – CommonsWare

+0

Cảm ơn bạn. Tôi đã thêm một số thông tin ngay bây giờ. – JoeyCK

+0

Tôi vừa mới phát hành một thư viện có thể quan tâm đến OP: https://github.com/ManuelPeinado/ImageLayout – Manuel

Trả lời

20

bạn có thể sử dụng RelativeLayouts như đã mô tả ở đây: Set the absolute position of a view

+2

Vấn đề lớn với RelativeLayout là nếu bạn lồng ghép chúng, số lượng cuộc gọi đến OnMeasure sẽ tăng gấp đôi mỗi bước. Vì vậy, nếu bạn cần một hệ thống phân cấp sâu, đây không phải là một câu trả lời hay. –

+0

@WilliamJockusch Tôi đã tìm ra điều này một cách khó khăn. Các giải pháp (tốt nhất sofar) là sử dụng LinearLayout bất cứ khi nào nó có thể (và nó thường là), và để tổ RelativeLayouts bên trong LinearLayouts. Tôi đã có một cái nhìn bảng mà tôi đã thực hiện với bố trí tương đối với lồng nhau RelativeLayouts - trên thay đổi chỉ nhìn từ trên xuống LinearLayout, tôi nhận được một thời gian thực hiện bình thường. Tôi sẽ suy đoán rằng bạn có thể hack một "AbsoluteLayout" bằng cách tạo ra một LinearLayout với RelativeLayout bên trong nó, nhưng âm thanh đó là khủng khiếp. – user1122069

0

tôi sẽ chỉ sử dụng một cách bố trí tương đối và thiết lập nó dựa tắt của các mặt hàng khác/cạnh của màn hình. Nếu không, bố cục của bạn sẽ xuất hiện khác nhau trên các thiết bị khác nhau.

+0

Tôi đang làm một hình ảnh nơi tôi phải đặt chế độ xem văn bản ở vị trí CHÍNH XÁC trên hình ảnh STATIC. Tôi nghĩ rằng cách duy nhất sẽ là (có hiệu lực nếu không về mặt kỹ thuật) một cách bố trí tuyệt đối. Sau đó, tôi có thể làm những cái cho các nhóm khác nhau nhưng vì tôi đang mong đợi một nỗi đau trong ass với nó. –

10

Sử dụng RelativeLayout và bộ trái và lề phải như

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
lp.leftMargin = x; 
lp.topMargin = y; 
5

Xem xét sử dụng FrameLayout. Nếu bạn đặt trọng số con của mình thành TOP|LEFT thì bạn có thể sử dụng các vị trí leftMargintopMargin. Là một phần thưởng bạn sẽ có được một vài cơ chế định vị hữu ích khác bằng cách thay đổi lực hấp dẫn.

1

Tôi sẽ đề nghị các bạn nếu bạn muốn có toàn quyền kiểm soát các vị trí của quan điểm của bạn trên màn hình chỉ để mở rộng ViewGroup và thực hiện của riêng bạn của AbsoluteLayout. Giải pháp đơn giản nhất là sử dụng một trong các Layouts hiện có và chơi với lề, đệm, trọng lực và vân vân, nhưng điều khiển sẽ không quá mạnh và có thể gây ra một số vấn đề trên màn hình thiết bị khác.