0

我試圖創建一個網格佈局,可以在平板電腦上的橫向和縱向上使用。我只有2列,但我遇到了一個問題,設置孩子的寬度。Android - 在GridLayout中設置一個孩子的寬度爲fill_parent導致兒童被剪裁

GridLayout設置爲match_parent。然後我嘗試將我的TextView設置在GridLayoutmatch_parent之間,認爲它會延伸到GridLayout之內。但我看到TextView的寬度超過了屏幕的邊緣。 (見截圖)

Problem with GridLayout clipping

如果我在列0刪除TextView,它將正常伸展。

這裏是我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:weightSum="1"> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/linearLayout3"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/textView17" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_column="7" 
    android:layout_row="0" 
    android:orientation="horizontal" 
    android:layout_rowSpan="21" 
    android:layout_gravity="center_horizontal|left" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:id="@+id/linearLayout4"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="119dp" 
     android:orientation="horizontal" 
     android:layout_weight="1" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center_vertical|center_horizontal"> 

     <ImageButton 
      android:id="@+id/phonebtn" 
      android:layout_width="75dp" 
      android:layout_height="75dp" 
      android:layout_gravity="center" 
      android:adjustViewBounds="false" 
      android:background="@drawable/phonebtn_cchange" 
      android:cropToPadding="true" 
      android:scaleType="fitXY" /> 

    </LinearLayout> 

    <GridLayout 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/linearLayout3" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/textView127" 
     android:layout_row="0" 
     android:layout_column="0" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/textView128" 
     android:layout_row="0" 
     android:layout_column="1" /> 
</GridLayout> 

</RelativeLayout> 

我認爲我設置的權重錯了,還是一處山坳跨度,但我不知道。任何幫助,將不勝感激。

回答

1

您可以通過將其寬度設置爲0dp並將其佈局重力參數設置爲「填充」來適應子級TextView。所以GridLayout會知道,TextView的寬度是任何列的寬度。

<GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:columnCount="2"> 

    <ImageView 
     android:layout_height="@dimen/list_item_height" 
     android:src="@drawable/ic_image"/> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_gravity="fill" 
     android:gravity="center_vertical"/> 
+0

這就是我一直在尋找的東西。謝謝! – taciosd