Android - 在GridLayout中将子项的宽度设置为fill_parent会导致子项被剪裁

时间:2015-11-24 16:32:01

标签: android android-linearlayout grid-layout android-relativelayout

我正在尝试创建一个适用于平板电脑横向和纵向的网格布局。我只有2列,但我遇到了设置孩子宽度的问题。

GridLayout设置为match_parent。然后,我尝试将TextView内的GridLayout设置为match_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 个答案:

答案 0 :(得分:1)

您可以通过将其宽度设置为0dp并将其布局重力参数设置为&#34;填充&#34;来适合子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"/>