2012-10-19 30 views
7

Tôi đã nhận ra rằng tôi không chắc chắn 100% cách tốt nhất để định vị một số phần tử giao diện người dùng để nó xuất hiện trên cùng một vị trí trên tất cả các thiết bị.Cách tốt nhất để định vị hình ảnh ở cùng một vị trí trên tất cả các thiết bị?

Cho đến nay đây là những lựa chọn:

  1. Set dp đệm cho mỗi thiết bị
  2. Hãy View trên hình ảnh này và thay đổi nó đệm cho mỗi thiết bị
  3. kích thước màn hình
  4. Tính trong Java code và từ mã đặt vị trí của nó theo cách generics. Ví dụ: đặt hình ảnh có chiều cao màn hình 1/5 từ trên xuống và áp dụng công thức này tùy thuộc vào chiều cao màn hình của thiết bị hiện tại.
  5. Tương tự như chỉ 2., nhưng thay vì sử dụng cố định dp, tôi chơi xung quanh với layout_weight của các yếu tố trong câu hỏi

gì có vẻ là cách tốt nhất?

Có cách nào tốt hơn mà tôi không đề cập đến ở đây không?

Cảm ơn

+1

sử dụng layout_weight thiết ui tại cùng một điểm trong tất cả các độ phân giải. –

+0

"Cùng một vị trí" so với cái gì? Đầu màn hình, đáy màn hình? Có hàng chục kích thước màn hình, vì vậy bạn phải cụ thể hơn trong ý bạn. Trọng số DIP và bố cục được tạo để giải quyết vấn đề này. –

Trả lời

6

Hai lựa chọn tốt nhất như sau:

  1. Trong mã - tính toán kích thước màn hình và làm việc với tỷ lệ màn hình.
  2. Sử dụng layout_weight cho chế độ xem của bạn và weight_sum cho chế độ xem gốc.

Một ví dụ nhỏ cho cách tiếp cận mã - Cho phép nói rằng bạn muốn có một Xem để được chính xác 25 phần trăm của chiều rộng màn hình:

WindowManager manager = (WindowManager) _context.getSystemService(Activity.WINDOW_SERVICE); 
int screenWidth = manager.getDefaultDisplay().getWidth(); 
YOUR_VIEW.getLayoutParams().width = (int) (screenWidth * 0.25); 
+0

Trong mã ?? Có thật không? Tôi đặt tùy chọn này nhưng tôi chưa bao giờ nghĩ rằng đây là một lựa chọn thực tế. Bạn có sử dụng phương pháp này không? – sandalone

+0

Vâng. Tôi sẽ thích cách tiếp cận trọng lượng đầu tiên, nhưng đôi khi bạn không có sự lựa chọn. – Givi

+0

Vì vậy, làm thế nào để bạn làm với cách tiếp cận trọng lượng. Bạn có chia màn hình ở các khu vực (ở đầu hoặc trên giấy) và sau đó tính toán trọng lượng phù hợp hoặc có cách tiếp cận tốt hơn không? – sandalone

Các vấn đề liên quan