2010-09-02 48 views
19

Tôi đang cố gắng chia một trang thành ba phần. Tôi muốn làm điều đó trong các giá trị phần trăm, tuy nhiên điều đó không được Android hỗ trợ. Thay vào đó, tôi phải sử dụng android:layout_weight. Nhưng tôi có một thời gian khó hiểu và làm đúng. Đặc biệt là kích thước thực tế được tính toán như thế nào. Có cách nào để nhận giá trị phần trăm (0,100%) trong số android:layout_weight không?Android: cố gắng hiểu android: layout_weight

Tôi đã xem xét một vài trường hợp (xem ảnh chụp màn hình đính kèm) để mô tả sự cố. Các trường màu là tất cả <LinearLayout> với android:layout_height="fill_parent", bởi vì tôi muốn toàn màn hình được chia giữa các trường đó.

Trường hợp 1

alt text

Được rồi, đơn giản. Mỗi <LinearLayout> nhận được 33%.

Trường hợp 2

alt text

Ups ?! Đầu tiên (màu vàng) <LinearLayout> biến mất hoàn toàn? Tại sao?

Trường hợp 3

alt text

Confused một lần nữa. Vàng <LinearLayout> đã hoạt động trở lại. Tuy nhiên, hai đầu tiên <LinearLayout> với trọng lượng nặng hơn sẽ nhỏ hơn? Chuyện gì vậy?

Trường hợp 4

alt text

Tôi hoàn toàn không có ý tưởng những gì mà toán học đằng sau tất cả điều này là.

Trả lời

25

Có cách nào để lấy giá trị phần trăm (0,100%) ra khỏi Android: layout_weight không?

Chắc chắn. Làm cho chúng thêm tối đa 100.

Đối với "giá trị phần trăm" của bạn, bạn muốn android:layout_height của các mục riêng lẻ trong LinearLayout0px.

+8

Đánh dấu, bạn đã thực hiện một ngày của tôi. Bạn không thể tin được bao nhiêu thời gian tôi đã cố gắng để tìm ra những trường hợp kỳ lạ. Và đơn giản 'android: layout_height =" 0px "' giải quyết mọi thứ :-) – znq

+1

Đặt layout_width thành "fill_parent" và layout_weight thành giá trị float như "0,2", "0,75" cũng hoạt động, trong trường hợp này số càng lớn một phần của không gian yếu tố sẽ mất. Bạn có thể vui lòng cho biết đây có phải là cách chấp nhận được không? – Yar

8

Khi bạn sử dụng android: layout_height = "fill_parent" cho các thanh, bạn sẽ không để lại bất kỳ khoảng trống nào khả dụng. (Vì họ đang điền vào các phụ huynh.) Bởi vì tất cả 3 được thiết lập để điền vào, chiều cao yêu cầu thực sự là 3 chiều cao cha mẹ, do đó, trọng lượng đang được áp dụng cho một không gian còn lại tiêu cực. Điều này giải thích hành vi kỳ lạ mà bạn đang thấy, và tại sao thiết lập layout_height thành 0px giải quyết nó.

+0

Liên kết đã chết. Bài đăng trên blog của bạn có sẵn ở nơi khác không? –

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