2010-03-09 32 views
9

Làm cách nào để ngăn tự động chia tỷ lệ bitmap của tôi trong ImageView hoặc ImageButton nếu chế độ xem hoặc nút được kéo dài bằng cách sử dụng "fill_parent" hoặc sử dụng "weight"? Điều này sẽ hữu ích, ví dụ, để tạo ra một thanh công cụ 4 nút ở phía trên cùng của màn hình, nơi các nút được đặt cách đều nhau, nhưng các hình ảnh bên trong các nút vẫn tiếp tục bị xáo trộn ngay cả khi tôi sử dụng scaleType = "center" , điều này sẽ ngăn ngừa việc mở rộng quy mô theo tài liệu, nhưng không.Android: Cách ngăn hình ảnh bị thu nhỏ trong ImageView hoặc ImageButton?

Bất kỳ thông tin chi tiết nào được đánh giá cao!

Cảm ơn,

Trả lời

10

Tôi thấy rằng khi sử dụng android: nền tự động chia tỷ lệ hình ảnh bạn đang sử dụng ở đó thành kích thước của Chế độ xem.

Tôi đã thử sử dụng android: src để đưa hình ảnh vào chế độ xem. Hình ảnh không được chia tỷ lệ, nhưng tôi không thể lấy hình ảnh ở giữa so với kích thước của Chế độ xem.

Vì vậy, tôi đã cố gắng làm cho toàn bộ nút bố trí tương đối riêng của nó và đây là những gì tôi đã sử dụng:

<RelativeLayout android:id="@+id/RelativeLayout01" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent"> 
       <ImageButton android:id="@+id/ImageButton01"  
          android:layout_height="fill_parent" 
          android:layout_width="fill_parent"></ImageButton> 
       <ImageView android:id="@+id/ImageView01" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:background="@drawable/cardback1" 
          android:layout_centerInParent="true"></ImageView> 
</RelativeLayout> 

Các ImageButton là ở chế độ nền và sẽ luôn luôn được kích thước tương tự như cách bố trí. Tuy nhiên, ImageView sẽ luôn ở giữa trong RelativeLayout và sẽ không mở rộng. Bằng cách này, bản thân RelativeLayout có thể phát triển và di chuyển và Hình ảnh ở trên cùng của nút sẽ luôn ở cùng kích thước, nhưng nút sẽ phát triển. Tuy nhiên, hình ảnh sẽ co lại nếu Bố cục trở nên nhỏ hơn bản thân hình ảnh.

Tôi nghĩ đó là những gì bạn đang tìm kiếm. Có thể có cách tốt hơn để làm điều này, nhưng đây là tất cả những gì tôi có thể nghĩ ra ngay bây giờ.

+17

Không cần phải làm điều này, chỉ cần không sử dụng android: background. Sử dụng android: src thay vào đó (ImageView) hoặc android: drawableLeft/Right/Bottom/Top (Nút hoặc ImageView) hoặc nút android: (ImageButton). –

+0

@Romain: Chúng tôi không thể sử dụng bản vẽ 9 bản có thể làm nền nút mà chúng tôi đánh dấu phần biểu tượng của nút của chúng tôi là không thể chia sẻ và tất cả không gian thừa xung quanh nó (vùng đệm quanh biểu tượng) có thể kéo giãn được không? Vì vậy, khi nền được kích thước lại chỉ phần phụ được kéo dài? – Samuh

+1

Cảm ơn Matt và Romain, android: src chính xác là những gì tôi đang tìm kiếm.Điều đó đã làm các trick :-) – user277827

2

Nếu hình ảnh được thu nhỏ, hãy chắc chắn bạn không chạy ứng dụng của bạn trong chế độ tương thích (ví dụ nếu bạn nhắm mục tiêu Android 1.5/1.6 không hỗ trợ nhiều mật độ và bạn chạy các ứng dụng trên Android 2.0.)

3

Chỉ cần sửa đổi đối tượng có thể vẽ của bạn, áp dụng nền trong suốt lớn hơn. Nói rằng drawable của tôi trong hdpi là 41 * 48 px icon.png. Tôi đã tạo một hình ảnh mới 60 * 60 px với nền trong suốt, sao chép và dán biểu tượng trước đó.png và lưu dưới cùng một tên. Bằng cách này, bạn không cần phải chạm vào bố cục của mình.

Sau đó, bạn có thể kiểm tra các khu vực nút lớn hơn nếu bạn áp dụng một không minh bạchandroid: background:

<ImageButton android:id="@+id/widget_open" 
android:src="@drawable/icon_widget_arrow_up" 
android:background="#ff777777" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content"></ImageButton> 

Áp dụng drawable trước và mới để android: src, bạn sẽ thấy rõ ràng Vùng ImageButton.

Nhân tiện, tôi đang chạy ứng dụng ở chế độ tương thích.

+0

overdrawing không mong muốn.không được khuyến nghị sử dụng – Asthme

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