2012-02-03 24 views
5

Vì có vẻ như GridLayout sẽ luôn đẩy con của nó vào bố cục tương ứng với nhu cầu của chúng. ví dụ: tuyên bố sau:GridLayout đẩy xuống con và tràn của nó khi điền fill_parent cho chiều cao

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnCount="3" 
    android:orientation="vertical" 
    android:rowCount="4" 
    android:useDefaultMargins="true" > 
... 
    <ImageView 
     android:id="@+id/main_image" 
     android:layout_column="1" 
     android:layout_columnSpan="2" 
     android:layout_row="3" 
     android:scaleType="fitStart" /> 
</GridLayout> 

GridLayout tuyên bố fill_parent và như vậy tôi mong đợi nó sẽ không tràn. GridLayout nên lấy kích thước của cha mẹ mà trong trường hợp này là cửa sổ (chiều cao đầy đủ). Tuy nhiên trong trình xem phân cấp, GridLayout được đặt là Wrap_content cho cả dọc và ngang.

Như vậy ImageView (đó là một hình ảnh lớn) hoặc bất kỳ chế độ xem văn bản nào sẽ được đẩy để vừa với chính chúng và khi vùng chứa đó bị tràn.

Điều này có thể được nhìn thấy trong người xem hệ thống phân cấp nơi xem lưới chứa phù hợp với phụ huynh:

container grid view

trong khi xem hình ảnh tràn

image view

Đọc tài liệu hướng dẫn, tôi hiểu có nhu cầu đặt trọng lực. Theo như tôi có thể thử, tôi đã sử dụng tất cả các loại tùy chọn trọng lực và tùy chọn chia tỷ lệ hình ảnh mà không có nhiều hiệu ứng. Loại bỏ các lề với useDefaultMargins="false" sẽ thay đổi tràn bố cục dẫn đến vấn đề đối với gridlayout.

Câu hỏi của tôi sau:

  • Đây có phải là một lỗi hay tôi đang sử dụng GridLayout sai
  • Làm thế nào tôi có thể buộc trẻ em của GridLayout để phù hợp với container của họ và để lấp đầy gian còn lại
+0

thấy điều này http://developer.android.com/resources/tutorials/views/hello-gridview.html – NagarjunaReddy

+0

Tôi có vấn đề này cùng, trừ khi tôi cung cấp cho các yếu tố đầu tiên một chiều cao rõ ràng, nó chiếm các toàn bộ cha mẹ và đẩy phần còn lại của bề mặt ... – sethro

Trả lời

0

Bí quyết trong các bố cục khác là cung cấp cho phần tử đầu tiên android: layout_weight = "1.0" và không có gì cho các phần tử khác. Tại sao nó hoạt động tôi không có ý tưởng, nhưng nó có. Đây là một XML đơn giản hiển thị một ImageView, một TextView và một Button. Nếu không có tham số layout_weight được gán cho ImageView thì văn bản và nút được chuyển xuống.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/white" 
    android:orientation="vertical" 
    android:keepScreenOn = "true" > 

    <ImageView 
     android:id="@+id/imageView_surprise" 
     android:layout_width="wrap_content" 
     android:layout_height="0dip" 
     android:scaleType="centerInside" 
     android:contentDescription="@string/accessibility_imageView_surprise" 
     android:layout_weight="1.0" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_gravity="bottom" > 

     <TextView 
      android:id="@+id/textView_message" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/black" 
      android:textSize="24sp" 
      android:gravity="center_horizontal" /> 

     <Button 
      android:id="@+id/button_share" 
      style="@style/button_text" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

</LinearLayout> 
Các vấn đề liên quan