2010-05-30 44 views
7

Tôi dường như không thể hiển thị ImageView của mình để hiển thị hình ảnh nguồn ở kích thước ban đầu. ImageView trông giống như sau:Android: ImageView mở rộng hình ảnh nguồn

<ImageView 
android:id="@+id/Logo" 
android:src="@drawable/logo" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
> 
</ImageView> 

Hình ảnh nguồn rộng 140 pixel, nhưng trên màn hình Nexus One, rộng 480 pixel, sử dụng hết một nửa chiều rộng. Sử dụng giá trị tuyệt đối trong px hoặc dp cho chiều rộng và chiều cao thay đổi không có gì. Hình ảnh cũng trông rất antialiased từ upscaling. Tại sao điều này xảy ra và làm thế nào tôi có thể ngăn chặn nó?

Trả lời

7

Nhiều khả năng, Android đang tăng kích thước hình ảnh, bởi vì bạn không cho biết rằng bạn đang hỗ trợ màn hình lớn. Thêm suitable <supports-screens> element vào tệp kê khai của bạn và xem điều đó có hữu ích không.

+0

Tôi vừa thử đề xuất của bạn và chắc chắn có điều gì đó liên quan đến điều đó. Cảm ơn nhiều! Hình ảnh có kích thước "chính xác" ngay bây giờ nếu tôi sử dụng kích thước của hình ảnh làm giá trị pixel tuyệt đối cho layout_width và layout_height. Nếu tôi sử dụng wrap_content hình ảnh vẫn còn lớn như trước, mà, như nó có vẻ, cũng là kích thước tương tự như khi tôi sử dụng kích thước của hình ảnh với "dp" như kích thước. Tôi đoán đây chỉ là cách wrap_content hoạt động. Trong trường hợp đó, sẽ có nghĩa là hình ảnh được hiển thị quá lớn trên một thiết bị có màn hình mật độ cao như Nexus. –

+0

Điều lạ lùng là nếu tôi sử dụng wrap_content cho layout_width và layout_height nhưng sử dụng các giá trị pixel tuyệt đối cho maxWidth và maxHeight không có hiệu lực. Vì việc sử dụng kích thước pixel không được khuyến khích nên tôi tự hỏi liệu có cách nào khác để ngăn hình ảnh bị lấn át không? –

+1

Bạn có thể muốn hai phiên bản của hình ảnh của bạn anyway, một cho màn hình mật độ trung bình và một cho màn hình mật độ cao. Thử đặt hình ảnh của bạn vào 'res/drawable-hdpi /' và xem nó có giúp ích gì không. – CommonsWare

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