2012-10-17 40 views
8

Tôi có một số RelativeLayout với một số nội dung trong đó và tôi muốn chế độ xem nền để lấp đầy toàn bộ nội dung. Đây là những gì tôi mong đợi để làm việc:Làm cách nào để tôi có thể thực hiện `Chế độ xem 'để điền vào` RelativeLayout`?

 <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#000" > 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentBottom="true" 
       android:layout_margin="1px" 
       android:background="#fafafa" /> 

      <ImageView 
       android:id="@+id/im" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:src="@drawable/ic_blank_profile" /> 

     .... and so on. 

Điều đó không hiệu quả. Nó lấp đầy chiều rộng nhưng chiều cao được đặt thành 0. Tuy nhiên, nếu tôi thay đổi layout_alignParentBottom thành layout_alignBottom="@+id/im" thì nó hiện hoạt động (loại; đó không phải là giải pháp thỏa đáng nhưng ít nhất nó không phải là 0 chiều cao nữa).

gì đang xảy ra? Đây có phải là một lỗi?

Trả lời

2

Hãy thử thiết lập các layout_height tài sản của bạn bố trí tương đối so với match_parent

Và điều gì xảy ra nếu bạn loại bỏ tất cả các alignParent tính từ quan điểm và chỉ sử dụng match_parent cho chiều rộng và chiều cao của tầm nhìn?

Rolf

Final ?:

ví dụ nhỏ, một cái gì đó như thế này? Sử dụng hộp chứa? Khi nội dung của RelativeLayout bên trong tăng View sẽ chỉ kéo dài với nó.

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


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


     <View 
      android:id="@+id/view1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignBottom="@+id/relativeLayout1" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_margin="1px" 
      android:background="#fafafa" /> 

     <RelativeLayout 
      android:id="@+id/relativeLayout1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <ImageView 
       android:id="@+id/im" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:src="@drawable/ic_blank_profile" /> 
     </RelativeLayout> 
    </RelativeLayout> 

</LinearLayout> 
+0

Loại 'layout_height' của' RelativeLayout' sẽ không ảnh hưởng đến bất kỳ con nào của nó. Tôi có nghĩa là nó đã là một chiều cao khác 0 vì vậy 'match_parent' ở trẻ em * nên * điền vào nó. Và thật đáng buồn là tôi đã thử đề nghị thứ hai của bạn. Không vui. – Timmmm

+0

Chỉnh sửa lại của bạn: Vâng, đó là mã của tôi hiện tại trông như thế nào, và là cái tôi hay nhất, nhưng đó không phải là giải pháp mà tôi đang tìm kiếm. Nếu bạn thêm các khung nhìn khác vào 'RelativeLayout' để nó trở nên lớn hơn, nền' View' sẽ không còn lấp đầy nó nữa. – Timmmm

+0

Đã chỉnh sửa bài đăng của tôi, bây giờ tôi đang sử dụng một vùng chứa để có được hành vi bạn muốn. –

2

Bạn cần thay đổi cách bố trí tương đối từ

android:layout_height="wrap_content" 

để

android:layout_height="match_parent" 

Bởi vì bạn đang quấn chiều cao của cha mẹ cho đứa trẻ, và đứa trẻ để phù hợp với phụ huynh , nó sẽ xuất hiện 0.

nếu bạn muốn có những thứ khác trên/dưới bố cục tương đối, thứ vi sử dụng trọng lượng Android.

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0px" <!-- or 0dip --> 
     android:layout_weight="1" 
     android:background="#000" > 
+0

Đó không phải là cách 'match_parent' hoạt động. Và tôi cũng không muốn 'RelativeLayout' của tôi điền vào cha mẹ của nó hoặc có thể mở rộng được. – Timmmm

+0

@Timmmm Vì vậy, làm một trong những không làm cho nó có thể nhìn thấy? – Doomsknight

+0

Không. Trong thực tế, thiết lập 'layout_height =" match_parent "' trong một 'LinearLayout' thẳng đứng (nó nằm trong) không có hiệu lực. Tôi nghĩ rằng 'LinearLayout' bỏ qua điều đó bởi vì nó sẽ không có ý nghĩa gì cả. – Timmmm

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