2012-09-11 24 views
7

Chúng tôi đang viết một ứng dụng nhắm mục tiêu ICS + và tin rằng GridLayout là mô hình bố cục tốt nhất, nhưng có vẻ như rất ít được viết về nó và chúng tôi đang gặp một số vấn đề về căn chỉnh.Xem trung tâm theo chiều ngang bên trong Android GridLayout

<GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/row_background" 
    android:rowCount="1" 
    android:columnCount="3" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:useDefaultMargins="true" 
    android:background="@drawable/list_item_bg"> 

    <ImageView 
     android:id="@+id/visibilityIcon" 
     android:layout_row="0" 
     android:layout_column="0" 
     android:src="@drawable/visibility_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"/> 

    <ImageView 
     android:id="@+id/windIcon" 
     android:layout_row="0" 
     android:layout_column="1" 
     android:src="@drawable/wind_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"/> 

    <ImageView 
     android:id="@+id/crosswindIcon" 
     android:layout_row="0" 
     android:layout_column="2" 
     android:src="@drawable/cloud_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"/> 

</GridLayout> 

Tuy nhiên, hai biểu tượng bên trái vẫn giữ liên kết trái và biểu tượng ngoài cùng bên phải với khoảng trống còn lại.

Về cơ bản những gì chúng tôi cần làm là chỉ định kích thước của mỗi cột là 1/3 (từ 3 cột) trong tổng kích thước màn hình. Tôi nghĩ đây là những gì GridLayout đã làm, nhưng nó xuất hiện 'wrap_content' gây ra hành vi này (có ý nghĩa), nhưng 'match_parent' làm cho cột đầu tiên lấp đầy toàn bộ màn hình, thay vì điền vào ô của nó, đó là hành vi tôi mong đợi.

Có vẻ như chúng tôi đã thử mọi kết hợp trọng lực, layout_gravity, v.v. nhưng về cơ bản chúng tôi đang làm điều gì đó sai hoặc đã tìm thấy giới hạn của GridLayout.

Cảm ơn sự giúp đỡ của bạn!

+0

GridLayout dường như vô dụng! –

Trả lời

8

Chỉ một hàng và một cột được phép phát triển trong GridLayout và đó là cột có trọng lực dọc theo trục đó. Nếu nhiều hơn một hàng hoặc cột chỉ định trọng lực thì chỉ một người sẽ nhận được nó (nếu tôi nhớ nó là "cuối cùng"). Chọn bố cục khác hoặc viết bố cục của riêng bạn. Nếu bạn chỉ muốn một hàng có các biểu tượng chia đều, bạn có thể sử dụng LinearLayout trong đó chiều rộng của các thành phần là 0px và trọng lượng là như nhau, ví dụ: 1.

+0

Cảm ơn câu trả lời. Trong sự tò mò, bạn đã tìm thấy giới hạn đó ở đâu? Chúng tôi sẽ điều tra nhiều hơn, nhưng có vẻ như bạn đã đúng ở đây. – RealCasually

+0

Như với nhiều thứ với Android nó đã được thử và lỗi và đọc nguồn;) Nhưng thực sự có một phần trong tài liệu được gọi là Hạn chế, với các câu sau đây: "GridLayout không cung cấp hỗ trợ cho các nguyên tắc trọng lượng, như Nói chung, không thể cấu hình GridLayout để phân phối không gian thừa giữa nhiều thành phần. " –

+0

Cảm ơn. Tôi biết tôi đang phân kỳ từ câu hỏi ban đầu ở đây - nhưng là "trọng lượng" trong một LinearLayout khái niệm tôi có khả năng tìm kiếm? Mục tiêu của tôi là phân phối đồng đều các biểu tượng này trong màn hình với khoảng cách bằng nhau. – RealCasually