Thường được hỏi, không bao giờ được trả lời (ít nhất là không theo cách có thể tái tạo).
Tôi có chế độ xem hình ảnh với hình ảnh nhỏ hơn chế độ xem. Tôi muốn chia tỷ lệ hình ảnh theo chiều rộng của màn hình và điều chỉnh chiều cao của ImageView để phản ánh chiều cao hình ảnh theo đúng tỷ lệ.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Điều này dẫn đến hình ảnh được căn giữa ở kích thước ban đầu (nhỏ hơn chiều rộng màn hình) với các lề ở bên cạnh. Không tốt.
Vì vậy, tôi đã thêm
android:adjustViewBounds="true"
Hiệu ứng tương tự, không tốt. Tôi đã thêm
android:scaleType="centerInside"
Hiệu ứng tương tự, không tốt. Tôi đã thay đổi centerInside
thành fitCenter
. Hiệu ứng tương tự, không tốt. Tôi đã thay đổi centerInside
thành centerCrop
.
android:scaleType="centerCrop"
Bây giờ, cuối cùng, hình ảnh được thu nhỏ theo chiều rộng của màn hình - nhưng bị cắt ở trên và dưới! Vì vậy, tôi đã thay đổi centerCrop
thành fitXY
.
android:scaleType="fitXY"
Bây giờ hình ảnh được thu nhỏ theo chiều rộng của màn hình nhưng không được thu nhỏ trên trục y, dẫn đến hình ảnh bị méo .
Loại bỏ android:adjustViewBounds="true"
không có hiệu lực. Thêm một android:layout_gravity
, như được đề xuất ở nơi khác, lại không có tác dụng.
Tôi đã thử các cách kết hợp khác - không có kết quả. Vì vậy, xin vui lòng có ai biết:
Làm cách nào để bạn thiết lập XML của ImageView để lấp đầy chiều rộng của màn hình, chia tỷ lệ hình ảnh nhỏ hơn để lấp đầy toàn bộ chế độ xem, hiển thị hình ảnh với tỷ lệ khung hình mà không bị biến dạng hoặc cắt xén?
CHỈNH SỬA: Tôi cũng đã thử đặt chiều cao số tùy ý. Điều này chỉ ảnh hưởng đến centerCrop
cài đặt. Nó sẽ làm biến dạng hình ảnh theo chiều dọc theo chiều cao xem.
android:scaleType="fitCenter"
chưa?