2010-09-06 42 views
12

Tôi đã tạo hình nền tùy chỉnh và muốn sử dụng nó làm nền cho bố cục có chiều cao wrap_content. Tuy nhiên, tổng chiều cao của nội dung bên trong bố cục đó nhỏ hơn nhiều so với chiều cao của hình nền.Hình nền cho wrap_content

Khi tôi đặt làm nền trong XML qua android: background = "@ drawable/image", tôi nhận thấy rằng nó hiển thị toàn bộ chiều cao của hình ảnh, mặc dù chiều cao của nội dung thực tế ngắn hơn nhiều.

Có cách nào để ngăn điều này xảy ra không?

Cảm ơn.

Trả lời

0

Bạn có thể chuyển đổi hình nền của mình thành bản vẽ 9 bit có thể vẽ hoặc sử dụng bitmap XML để thay đổi hành vi của hình ảnh khi nó lớn hơn vùng chứa. Xem this page để biết thêm thông tin về cả hai.

+0

Bạn có thể giải thích thêm về điều này nếu sử dụng bitmap XML không? Tôi đã thử sử dụng một bitmap XML và sử dụng thuộc tính android: gravity = "top | fill_horizontal | clip_vertical" để xem điều đó có giải quyết được vấn đề không, nhưng nó vẫn không. – user440308

+0

Vâng, tôi đã không thử bitmap XML cho các trường hợp như của bạn, nhưng các tùy chọn trông đầy hứa hẹn. Cách vá 9-bit sẽ làm việc chắc chắn - tôi đã sử dụng nó rồi. –

+0

Hmm. Tôi đã thử tất cả các tùy chọn có thể giúp đỡ, nhưng tôi nghĩ rằng tôi có thể làm điều gì đó sai trái. Tôi đã tìm kiếm ở khắp mọi nơi trực tuyến và dường như không ai có vấn đề này ... – user440308

2

Tôi gặp sự cố tương tự và đang sử dụng 9patch. Hình ảnh đầy đủ 9 bản vá được hiển thị dưới dạng nền mặc dù nội dung được đính kèm không phải là lớn (đã sử dụng wrap_content). Tôi không chắc tại sao Android chọn hiển thị hình ảnh đầy đủ thay vì mở rộng nền để vừa với nội dung.

Tuy nhiên, tôi đã khắc phục sự cố bằng cách chia tỷ lệ hình nền của tôi xuống. Bằng cách đó tôi có nghĩa là bảo tồn các góc nhưng thu nhỏ các phần dọc và ngang. Xem hình ảnh đính kèm của khung nền tôi đã có trước đây và kết quả của nỗ lực thay đổi kích thước.

alt text alt text

+0

Cảm ơn rất nhiều vì điều này. Tôi đã dành một số giờ để tìm hiểu lý do tại sao hình ảnh 9patch của tôi tạo ra một cái nhìn cao hơn nhiều so với nó phải có với wrap_content như tham số chiều cao. Điều thú vị là hiệu ứng này dường như phụ thuộc vào thiết bị.Trên Nexus7, chiều cao xem là chính xác ngay cả với hình nền lớn ban đầu trong khi trên một tia Xperia, chiều cao xem đã gần gấp đôi lớn như nó đáng lẽ phải có. Trên Xperia mini và trên một máy tính bảng Android giá rẻ với Cyanogen Mod, "hiệu ứng" cũng có nhưng không mạnh như trên Xperia ray. – Nantoka

0

Tôi cũng phải đối mặt với vấn đề này. Nếu bạn đặt tài nguyên của nền quá nhỏ, bạn có thể gặp sự cố với tỷ lệ khung hình. Giải pháp tôi tìm thấy là chia hình ảnh nền thành ba phần: trên, giữa và dưới. Mỗi hình ảnh trong số này là hình nền của ba Bố cục/Hình ảnh khác nhau. Phần giữa là một trong đó giữ "wrap_content" bất động sản:

chính: bg_top

Trung: bg_middle

Bottom: enter image description here

Như của nội dung tăng kích thước, biên giới sẽ tiếp tục không bị ảnh hưởng và giữa sẽ tăng lên (như toàn bộ "hộp"). Tất nhiên, đây là một giải pháp cho một trường hợp phân vùng hình nền của bạn có ý nghĩa.