Tôi có một TextView
và một hình vuông ImageView
mà tôi muốn hiển thị theo bố cục tuyến tính ngang. Mỗi quảng cáo phải chiếm một nửa chiều rộng của chế độ xem gốc và chiều cao phải phù hợp với nội dung (ví dụ: hình ảnh). Văn bản phải được căn giữa theo chiều dọc.Bố cục ngang linh hoạt với `layout_weight` và` maxWidth`
Hạn chế bổ sung là hình ảnh không được phát triển vượt quá maxWidth
(= maxHeight
) nhất định và chiều rộng dư thừa phải được cung cấp cho TextView
. Rõ ràng, điều này mâu thuẫn với quy tắc 50/50 ở trên. Có cách nào để ưu tiên các ràng buộc, tức là cho phép hình ảnh chiếm một nửa không gian trừ khi nó vượt quá một kích thước nhất định?
Đây là những bố trí tôi đã cố gắng:
Người đầu tiên độc đáo trải dài phía bên trái để không gian có sẵn. Tuy nhiên, hình ảnh mất hơn một nửa chiều rộng vì nó không được chỉ định (như trong hình dưới đây).
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some text."/>
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="200dp"
android:adjustViewBounds="true"
android:src="@drawable/image" />
</LinearLayout>
Khi tôi thêm layout_weight
đến ImageView
nó luôn luôn có một nửa chiều rộng và bỏ qua (hình ảnh xem dưới đây) maxWidth
.
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="200dp"
android:adjustViewBounds="true"
android:src="@drawable/image" />
Đưa các ImageView
trong LinearLayout
khác cho phép maxWidth
một lần nữa, nhưng kèm theo LinearLayout
vẫn mất một nửa của không gian có sẵn (xem hình dưới đây).
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right">
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="200dp"
android:adjustViewBounds="true"
android:src="@drawable/image" />
</LinearLayout>
Một tùy chọn khác Tôi đã tìm thấy cho similar scenarios là sử dụng một RelativeLayout
với một cái nhìn vô hình như một chia trung tâm, nhưng mà khóa bộ phận để 50/50 (hoặc bất cứ nơi nào chia được đặt) .
'TextView' điền vào màn hình khác và tất cả đều dễ dàng .. điều kiện xung đột trong đó mỗi' Chế độ xem' (* TextView và ImageView *) chiếm một nửa chiều rộng của cha mẹ làm cho nó khó khăn .. –