2013-08-24 40 views
10

Tôi muốn có một ngang LinearLayout đó là rộng như màn hình và cao như con của nó, nhưng thủ đoạn này là rằng con cái của nó sẽ có chiều rộng động và tôi không muốn chúng tắt màn hình (cắt ra). Tôi muốn họ chảy/phá vỡ trong một dòng mới để họ có thể nhìn thấy tất cả.ngang LinearLayout với nhiều trẻ em, Move Trẻ em Dưới đây trên New Line Khi No More Space ngang

Mặc dù hoàn toàn không liên quan đến Android, nó sẽ hoạt động tương tự như cách hoạt động của nội dung trong HTML <div>.

Dưới đây là những gì tôi có ngay bây giờ:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="If you would enter some digits in this field " /> 
     <EditText 
      android:id="@+id/tvDistance" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:hint="enter some digits here"/> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text=" that would be great" /> 
    </LinearLayout> 

Nhưng ngay khi những đứa trẻ của LinearLayout được rộng hơn so với màn hình phần phụ được ra khỏi màn hình/vô hình.

+0

Tôi không nghĩ rằng có thể thực hiện được trong bố cục Android. Trừ khi bạn triển khai người nghe đo chiều rộng và những gì không và di chuyển chế độ xem xuống. Tùy chọn khác là tạo một WebView và điền vào nó, tôi biết nó có thể thực hiện được như vậy, tuy nhiên tôi không có kinh nghiệm về khía cạnh đó. Chúc may mắn. – LuckyMe

Trả lời

14

Tôi muốn có một LinearLayout ngang đó là rộng như các màn hình và cao như con của nó, nhưng thủ đoạn này là con của nó sẽ có chiều rộng năng động mỗi và tôi không muốn họ đi tắt màn hình (cắt ra).

Một LinearLayout không thể làm điều đó (bất kỳ cách bố trí mặc định từ SDK không thể làm điều đó) vì LinearLayout được thiết lập để đặt tất cả trẻ em trong một đường ngang hoặc dọc. Ngoài ra, bất kỳ loại quy tắc bố cục có điều kiện nào dựa trên các thứ nguyên chưa có sẵn (như trong trường hợp của bạn, chiều rộng có sẵn cho LinearLayout) cũng không thể có trong xml.

Điều bạn cần là bố cục tùy chỉnh giúp trẻ em sử dụng không gian có sẵn di chuyển bất kỳ trẻ em không phù hợp nào trên một dòng mới bên dưới (được gọi là FlowLayout).

Edit:

Google hiện nay cung cấp các thư viện flexbox mà thực hiện bố trí flexbox của web trên Android. Sử dụng thư viện đó, con của một số FlexboxLayout sẽ được đặt trên nhiều dòng dựa trên chiều rộng của chúng bằng cách sử dụng flexDirection (với giá trị hàng) và flexWrap (với giá trị wrap).

+0

liên kết video bị hỏng –

+0

@ViperAlpha Có, trang web của khu trục đã biến mất. Tôi đã tìm một video thay thế nhưng tôi không thể tìm thấy bất kỳ video nào. Video là từ Chet Haase, một trong những nhà phát triển SDK Android nói về việc tạo chế độ xem tùy chỉnh và tạo FlowLayout trong quá trình này. Có các thư viện triển khai bố cục đó nếu bạn cần, các thư viện như https://github.com/ApmeM/android-flowlayout – Luksprog

+1

Phát hiện ra rằng Google đã triển khai riêng của mình: https://github.com/google/flexbox-layout, sẽ là tốt đẹp cho bạn để thêm nó vào anwer của bạn –

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