2011-01-13 47 views
9

Làm cách nào tôi có thể đặt chiều cao thành phần bố cục giống với một thành phần khác: ví dụ: Tôi có thể đặt android: layout_height = "@ + id/info_box.height" hoặc làm điều tương tự không?Cách đặt chiều cao của một thành phần bố cục thành cùng chiều cao của một thành phần khác?

Tôi muốn chiều cao của ImageView để phù hợp với các LinearLayout tôi

ImageView android:id="@+id/border" 
    android:src="@drawable/frame" 
android:layout_below="@+id/title" 
android:layout_width="fill_parent" 
android:layout_height="????"  
android:scaleType="fitXY" 
android:drawingCacheQuality="auto" 
/> 

<LinearLayout 
android:id="@+id/info_box" 
android:orientation="vertical" 
android:layout_below="@+id/title" 
android:background="@layout/my_bg" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
> 
... other stuff . . 
</LinearLayout> 
+0

Umm. Tại sao bạn không đặt trí tưởng tượng của mình trong bố cục tuyến tính và đặt chiều cao là fill_parent? – Falmarri

+0

@Falmarri: Nếu ImageView và LinearLayout của mình nằm trong LinearLayout ngang (không được chỉ định) sẽ không có kết quả tương tự. Ngoài ra, bạn có thể điền fill_parent cho một đứa trẻ và wrap_content cho cha mẹ không? Điều đó có vẻ gần như nghịch lý. – kcoppock

+0

Cần thêm thông tin. ViewGroup gốc của bạn ImageView và LinerLayout là gì? Bạn muốn đạt được điều gì với bố cục của mình? –

Trả lời

4

Cách duy nhất để đạt được điều này là phải có hai quan điểm là một phần của cùng một container. Một LinearLayout hoặc RelativeLayout thường rất thích hợp cho việc này. Bạn cũng có thể đạt được điều này thông qua mã.

+0

Làm thế nào bạn sẽ làm điều đó nếu họ là một phần của cùng một container? Tôi nghĩ rằng anh ta hoặc cô ấy muốn thực hiện quy mô ImageView với chiều cao của LinearLayout. –

+0

Nevermind, tôi tìm thấy nó. Trên imageview: scaletype = "centercrop", layout_height = "fill_parent" và layout_width = "fill_parent". Chìa khóa? scaletype = "centercrop" không hoạt động trên trình chỉnh sửa bố cục. –

1

Bạn có thể sử dụng android:layout_weight.

Đặt hai chế độ xem của bạn (border và info_box) với fill_parent và cùng một giá trị layout_weight trong cùng một LinearLayout với orientation = verticale.

Với kỹ thuật này, đường viền và info_box sẽ có cùng chiều cao.

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/border" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/title" 
     android:layout_weight="2" 
     android:drawingCacheQuality="auto" 
     android:scaleType="fitXY" 
     android:src="@drawable/frame" /> 

    <LinearLayout 
     android:id="@+id/info_box" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/title" 
     android:layout_weight="2" 
     android:background="@layout/my_bg" 
     android:orientation="vertical" > 

     ... other stuff . . 

    </LinearLayout> 

</LinearLayout> 
+1

anh ấy không muốn tất cả các chế độ xem có fill_parent. Anh ta muốn một người được wrap_content, và người kia là cao nhất là người đầu tiên. – Danail

+0

Anh ta có thể thay đổi chiều rộng và chiều cao của LinearLayout đầu tiên và chọn kích thước mong muốn. Nhưng ImageView và LinearLayout thứ hai sẽ luôn có cùng chiều cao (hoặc chiều rộng), bởi vì chúng có cùng layout_weight .. – fingerup

+0

Hiệu quả, layout_weight không thể thực hiện với wrap_content ... – fingerup

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