2012-06-30 54 views
20

Trong dự án Android của tôi, tôi không hoàn toàn chắc chắn làm thế nào để làm cho hình nền của tôi lấp đầy toàn bộ phần tử gốc RelativeLayout trong XML, đó là kích thước của màn hình. Tôi muốn chắc chắn rằng điều này làm việc cho tất cả các tỷ lệ khung hình, vì vậy hình ảnh sẽ clip theo chiều dọc hoặc chiều ngang khi cần thiết. Có ai biết cách làm điều này một cách dễ dàng không? Tôi chỉ thấy các câu hỏi liên quan đến ImageView s và Button s, nhưng không thực sự là chung chung View s.Làm thế nào để làm cho hình ảnh điền vào nền RelativeLayout mà không kéo dài

tập tin My XML hiện:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/enclosing_rl" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    android:fitsSystemWindows="false"> 
<!-- Other elements --> 
</RelativeLayout> 
+0

không thể làm cho BG ảnh 9ptach png? –

+1

Xin lỗi nhưng không nhận được câu hỏi của bạn chính xác kích thước hình ảnh của bạn được cố định và kích thước màn hình của bạn cũng được gửi cho một trường hợp, Vì vậy, hãy tô màu hình ảnh màn hình để mở rộng –

Trả lời

51

Khác hơn là biến hình ảnh của bạn thành một bản vá chín Tôi không nghĩ rằng điều này là có thể. Thay vào đó, những gì bạn có thể làm là thêm một ImageView làm chế độ xem đầu tiên trong RelativeLayout của bạn. Đặt layout_centerInParent thành true và có layout_width và layout_height được đặt thành match_parent. Sau đó đặt scaleType thành centerCrop. Điều đó sẽ đảm bảo hình ảnh lấp đầy màn hình mà không có bất kỳ sự biến dạng nào, nhưng tùy thuộc vào kích thước màn hình/hướng hoặc một số đầu/cuối hoặc trái/phải của hình ảnh có thể bị cắt.

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerInParent="true" 
     android:scaleType="centerCrop" 
      android:src="@drawable/background" /> 

Bất kỳ giao diện khác trong RelativeLayout sẽ xuất hiện trên đầu trang của ImageView, miễn là nó là quan điểm đầu tiên trong RelativeLayout (khi bạn đang ở trong xml).

+0

Đừng quên 'android: src =" @ drawable/background "'. – pqn

+0

@PremN. haha cảm ơn, tôi đã chỉnh sửa câu trả lời. – Flynn81

+0

Cảm ơn bạn rất nhiều! – DmitryKanunnikoff

11

Tạo một tài nguyên XML drawable bitmap trong res của bạn/drawable thư mục:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/background" 
    android:tileMode="repeat" /> 

Sử dụng rằng drawable làm nền thay vì @ drawable/nền

+0

Tôi không thực sự muốn nó, nhưng cảm ơn cho quảng cáo của bạn đầu vào bằng cách sử dụng một bitmap XML. – pqn

+0

Cảm ơn Nobu, đây chính xác là những gì tôi đang tìm kiếm! – zabawaba99

4

theo answer này Nếu bạn muốn bạn ImageView điền RelativeLayout của bạn, sử dụng align tham số cho ImageView.

bạn có thể đặt tất cả các quan điểm của bạn với một tham số LinearLayout và thiết lập align để nền của bạn ImageView:

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/my_background" 
     android:scaleType="centerCrop" 
     android:layout_alignTop="@+id/my_views" 
     android:layout_alignBottom="@+id/my_views" 

     /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/my_views" 
     android:orientation="vertical" > 
    <!-- stuff --> 
    </LinearLayout> 


</RelativeLayout> 
Các vấn đề liên quan