2012-01-03 15 views
15

Tôi có bố trí XML đơn giản này, và một tập tin green_square.png đó là 30x30 pixelScaling một hình ảnh với chiều rộng có sẵn tối đa, giữ tỷ lệ khía cạnh và tránh ImageView thêm không gian

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:background="@color/red" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:adjustViewBounds="true" 
     android:scaleType="fitStart" 
     android:src="@drawable/green_square"/> 

</LinearLayout> 

Những gì tôi đang cố gắng để đạt được đang mở rộng hình ảnh để lấp đầy chiều rộng của bố mẹ, giữ tỷ lệ khung hình của nó mà không có thêm không gian của ImageView.

Tôi đã thêm một nền màu đỏ vào ImageView chỉ để tham chiếu về khoảng trống thừa mà tôi muốn tránh.

Here is my goal

+4

Hãy thử 'android: adjustViewBounds = "true" ' – sebataz

+0

cảm ơn, đó là những gì tôi nghĩ, nhưng nó đã có –

+0

Dường như vấn đề này được bugging nhiều người dùng, kiểm tra liên kết này http: // nhóm. google.com/group/android-developers/browse_thread/thread/89d21a582ebc5b21 –

Trả lời

-1

Sử dụng loại quy mô "fitCenter" hoặc "fitxy"

+1

Cảm ơn bạn đã trả lời, tuy nhiên, fitCenter chỉ tập trung chế độ xem rời khỏi lề trên đầu và dưới thay vì chỉ dưới (nếu sử dụng fitStart) và fitXY làm cho hình ảnh mất tỷ lệ của nó. –

+0

bất kỳ ý tưởng nào khác? –

+0

bạn có thể đặt hình ảnh bitmap trong mã thay vì xml bằng cách tạo thông qua Bitmapfactory nhưng bạn không thể phù hợp với hình ảnh 30X30 pixel ở chế độ toàn màn hình mà không làm giảm tỷ lệ khung hình của nó. Sử dụng BitmapFactoey để tạo hình ảnh bitmap và sau đó tạo hình ảnh tỷ lệ từ chức năng Tạo bitmap nó sẽ giúp bạn .. http://developer.android.com/reference/android/graphics/Bitmap.html và http://developer.android .com/reference/android/graphics/BitmapFactory.html – loks

-4

Hãy thử điều này,

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/red" 
    android:scaleType="centerCrop" 
    android:src="@drawable/green_square" /> 

</LinearLayout> 
+0

Cảm ơn đề xuất, tuy nhiên bố cục này sẽ lấp đầy toàn bộ chế độ xem. Đây là những gì tôi muốn đạt được https://lh6.googleusercontent.com/-0UaWzbAvVkA/TwLdxtHZx6I/AAAAAAAAByA/YQh5Ein-2Fs/w500-h423-k/screen-shot.jpg –

+0

Được bỏ phiếu xuống do thiếu mô tả thích hợp. Nó chỉ là một đoạn mã, không phải là một câu trả lời. –

+0

@King RV - bất kỳ ý tưởng nào? –

0

Theo quan điểm của tôi, thêm ImageView bố trí này là một lỗi. Tôi cũng gặp phải điều tương tự. Kết quả là, văn bản mà tôi muốn theo dõi green_square theo cách bố trí bổ sung. Vì vậy, những gì tôi đã làm được chỉ định văn bản liên quan đến dưới cùng của màn hình. Bằng cách đó, văn bản sẽ đi qua bố trí bổ sung. Tôi thừa nhận, nó không phải là giải pháp tốt nhất, nhưng nó có vẻ tốt hơn nhiều so với việc có một không gian rộng lớn giữa green_square và văn bản.

31
<ImageView 
     android:id="@+id/game" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:scaleType="centerCrop" 
     android:adjustViewBounds="true" 
     android:src="@drawable/ic_game" 
     /> 

điều này phù hợp với tôi. Chiều rộng đầy đủ của bố cục gốc và giữa để giữ tỷ lệ khung hình

+2

Làm việc cho tôi. Nên là giải pháp được chấp nhận. Cảm ơn! –

+3

'centerCrop' kéo giãn hình ảnh với chiều rộng đầy đủ, nhưng có khả năng cắt xén trên cùng và dưới cùng khi _view_ giữ nguyên độ cao ban đầu, nhưng tỷ lệ khung hình ảnh được giữ để nó không bị đè nén hoặc kéo dài. 'adjustViewBounds' cho phép chiều cao phát triển để tránh xén thực tế và có _view_ cũng giữ tỷ lệ khung hình của hình ảnh. Được sử dụng cùng nhau, họ làm những gì cần thiết cho OP. – lilbyrdie

+0

thay thế 'centerCrop' cho' fitXY' Tôi không nhận thấy bất kỳ sự khác biệt nào. Có gì khác biệt? –

0

Rất đơn giản. Chỉ cần làm cho chiều rộng fill_parent và height wrap_content. Đây là tôi đã tìm ra.

<ImageView 
    android:id="@+id/game" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="centerCrop" 
    android:adjustViewBounds="true" 
    android:src="@drawable/ic_game" 
    /> 
Các vấn đề liên quan