2012-06-06 12 views
6

Tôi đã 2 viên:kích cỡ khác nhau trên 2 thiết bị, ngay cả khi tôi sử dụng "dp"

1 Samsung Android 3,0

DisplayMetrics {density=1.0, width=600, height=976, 
scaledDensity=1.0, xdpi=161.55031, ydpi=155.51021} 

1 thiết bị chi phí thấp, Android 2.3.3

DisplayMetrics {density=1.0, width=480, height=800, 
scaledDensity=1.0, xdpi=160, ydpi=160.42105} 

Nếu tôi sử dụng bố cục khác nhau cho mỗi kích thước màn hình, cả hai thiết bị đều có độ dài lớn và mdpi, vì vậy tôi không thể phân biệt chúng bằng cách sử dụng tên thư mục bố cục ... Vấn đề là:

Tôi sử dụng TextView với textSize = "20dp"

Trong thiết bị linh hoạt, chiều rộng văn bản bằng một nửa màn hình, trong thiết bị thứ hai lớn hơn (80% chiều rộng màn hình). Tại sao? Tôi hy vọng rằng cả hai thiết bị hiển thị văn bản trong cùng một cách nếu tôi sử dụng dp (và không phải px). Tôi cũng đã cố gắng với sp nhưng không thay đổi ...

(tôi đã sử dụng TextView làm ví dụ, tôi đã cùng một vấn đề với tất cả các yếu tố trong cách bố trí: Nút kích cỡ, ...)

tôi sẽ cố gắng để sử dụng tên thư mục bố cục như "layout-w600dp" hoặc tên khác được giới thiệu trong Android 3.2 nhưng đây không phải là trường hợp.

Tôi biết tôi có thể thay đổi kích thước phần tử bằng cách mã trong onLayout() nhưng tôi không muốn làm điều đó ...

Bất kỳ đề nghị?

Cập nhật

tôi giải quyết vấn đề của tôi với cách bài trí sử dụng chủ đề: Activate a specific dimens.xml at runtime

+0

Tôi gặp vấn đề chính xác với 2 phần cứng tương tự. Phong cách giải quyết vấn đề cho kích thước và hình ảnh văn bản? Làm thế nào để bạn biết bố trí để chọn nếu cả hai thiết bị không thể được destinguished – Snake

+0

Làm thế nào bạn có thể nói rằng 2 thiết bị không phân biệt? Bạn đã thử nhìn vào mật độ và độ phân giải chưa? DisplayMetrics có giống nhau không? –

+0

Tôi có cả hai thiết bị hiển thị số liệu hiển thị như bạn đã trình bày. Cả hai đều tương tự với một sự khác biệt nhỏ trong xdpi, ydpi. Khi tôi nói rằng họ là như nhau tôi có nghĩa là họ là cả hai thiết bị kích thước màn hình kích thước lớn desnity trung bình. Tuy nhiên kích thước hình ảnh/kích thước nút là khác nhau – Snake

Trả lời

3

Các android documentation on Dimention nói

Tỷ lệ này của dp-to-pixel sẽ thay đổi với mật độ màn hình, nhưng không nhất thiết phải trực tiếp tỷ lệ

Vì vậy, nó hoàn toàn ok những gì bạn thấy

Bạn có thể đạt 50% so với màn hình sử dụng LinearLayout weigth..Refer this

+1

Trong trường hợp mật độ của tôi có vẻ giống nhau cho cả hai thiết bị.Nhu cầu của tôi là hiển thị văn bản chính xác theo cùng cách trên cả hai thiết bị, điều chỉnh trọng lượng bố cục là giải pháp nhưng không hữu ích cho trường hợp này: nếu tôi sử dụng bố cục với 50% chiều rộng màn hình, trong văn bản thiết bị đầu tiên được hiển thị trong một dòng, trong văn bản thiết bị thứ hai được hiển thị trong 2 dòng ... –