Tôi có hai chế độ xem trong bố cục. Tôi sẽ gọi chúng lần lượt là View A
và View B
.MATCH_PARENT nếu chế độ xem anh chị em lớn hơn, WRAP_CONTENT nếu chế độ xem anh chị em nhỏ hơn
┌──────┐
│┌─┐┌─┐│
││A││B││
│└─┘└─┘│
└──────┘
Chiều cao của bố trí cha mẹ (bao gồm View A
và View B
) là WRAP_CONTENT
.
Ở đây, chiều cao View B
là WRAP_CONTENT
. Đó là, chiều cao của nó có thể được thay đổi liên quan đến nội dung của nó.
Những gì tôi muốn làm là
- 'chiều cao s để
View B
' SetView A
s chiều cao nếuView A
'nội dung s là ngắn hơnView B
' nội dung s. - Đặt chiều cao của nội dung là
View A
nếu nội dung củaView A
cao hơn nội dung củaView B
.
Vì vậy,
① Nếu nội dung của View B
là cao, sau đó View A
's chiều cao được thiết lập để View B
' chiều cao s.
┌──────┐ ┌──────┐
│┌─┐┌─┐│ │┌─┐┌─┐│
││ ││ ││ ││A││ ││
I want ││A││B││, not │└─┘│B││.
││ ││ ││ │ │ ││
│└─┘└─┘│ │ └─┘│
└──────┘ └──────┘
② Nếu nội dung của View B
là ngắn hơn, sau đó View A
's chiều cao là View A
' chiều cao của riêng conent của.
┌──────┐ ┌──────┐
│┌─┐┌─┐│ │┌─┐┌─┐│
││ ││B││ ││A││B││
I want ││A│└─┘│, not │└─┘└─┘│.
││ │ │ └──────┘
│└─┘ │
└──────┘
Nếu phụ huynh là LinearLayout (Horizontal)
, thiết View A
'chiều cao s để WRAP_CONTENT
vi phạm trường hợp 1, và thiết lập View A
' chiều cao s để MATCH_PARENT
làm hại chính trường hợp 2.
Nếu phụ huynh là RelativeLayout
, thiết View A
để gắn kết cả hai vi phạm trên cùng và dưới cùng của cha mẹ của nó là điều kiện của RelativeLayout
: Note that you cannot have a circular dependency between the size of the RelativeLayout and the position of its children. For example, you cannot have a RelativeLayout whose height is set to WRAP_CONTENT and a child set to ALIGN_PARENT_BOTTOM.
Làm cách nào để giải quyết vấn đề này?
Không có cách nào để thực hiện điều này? Nếu không, tôi sẽ phải làm điều này bên trong bộ điều hợp của tôi bởi vì tôi muốn làm một cái gì đó như thế này bên trong một danh sách đầy tự động. –
@BartBurg: Một 'ViewGroup' tùy chỉnh có lẽ sẽ là giải pháp tối ưu nhất. Việc mở rộng 'LinearLayout' sẽ là một khởi đầu tốt và - tùy thuộc vào trường hợp sử dụng cụ thể của bạn - tất cả những gì bạn cần làm là ghi đè' onMeasure() 'để xem xét các tiêu chí được nêu ở trên. –
Nó gây ra một hiệu ứng hoạt hình, có thể không mong muốn. Một mẫu ViewGroup tùy chỉnh sẽ được đánh giá cao. –