GridView不会扩展

时间:2015-03-21 22:43:08

标签: android xml gridview

我在Android中有点新并遇到了这样的问题,我试图在scrollview中使用ExpandableHeightGridView进行gridview,但是布局没有渲染,请一些建议。

它总是给我这个错误:

  

渲染期间引发异常:ScrollView只能托管一个直接子项

ExpandableHeightGridView.class

public class ExpandableHeightGridView extends GridView {

    boolean expanded = false;

    public ExpandableHeightGridView(Context context)
    {
        super(context);
    }

    public ExpandableHeightGridView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    public ExpandableHeightGridView(Context context, AttributeSet attrs,
                                    int defStyle)
    {
        super(context, attrs, defStyle);
    }

    public boolean isExpanded()
    {
        return expanded;
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        // HACK! TAKE THAT ANDROID!
        if (isExpanded())
        {
            // Calculate entire height by providing a very large height hint.
            // View.MEASURED_SIZE_MASK represents the largest height possible.
            int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK,
                    MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, expandSpec);

            ViewGroup.LayoutParams params = getLayoutParams();
            params.height = getMeasuredHeight();
        }
        else
        {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }

    public void setExpanded(boolean expanded)
    {
        this.expanded = expanded;
    } }

layout.xml

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#fed70d"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/iconBack"
            android:layout_width="45dp"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:paddingBottom="16dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="16dp"
            android:src="@drawable/icon_back_white" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"
            android:text="Wishlist"
            android:textColor="#ac920d"
            android:textSize="24sp" />

        <LinearLayout
            android:id="@+id/myCart"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center|right"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginRight="10dp"
                android:orientation="horizontal">

                <ImageView

                    android:id="@+id/addedInCart"
                    android:layout_width="27dp"
                    android:layout_height="27dp"
                    android:layout_gravity="center|right"
                    android:src="@drawable/icon_menu_cart" />

                <TextView
                    android:layout_width="15dp"
                    android:layout_height="15dp"
                    android:layout_marginTop="5dp"
                    android:background="@drawable/icon_mycart_count"
                    android:gravity="center_horizontal|center"
                    android:text="2"
                    android:textColor="#ffffff"
                    android:textSize="10dp" />
            </LinearLayout>

            <TextView
                android:id="@+id/myMoneyInMyPocket"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center|right"
                android:layout_marginRight="10dp"
                android:text="2000$"
                android:textSize="14sp" />

        </LinearLayout>


    </LinearLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#ad8c22" />


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


        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffffff">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:background="#fed70d"
                android:orientation="horizontal"
                android:weightSum="5.0">

                <LinearLayout
                    android:id="@+id/menuItemStores"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0"
                    android:orientation="vertical"
                    android:paddingTop="8dp">

                    <ImageView
                        android:id="@+id/menuIconStores"
                        android:layout_width="27dp"
                        android:layout_height="27dp"
                        android:layout_gravity="center"
                        android:src="@drawable/icon_menu_logo" />

                    <TextView
                        android:id="@+id/menuTextStores"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:text="Stores"
                        android:textSize="14sp" />

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/menuItemInfo"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0"
                    android:orientation="vertical"
                    android:paddingTop="8dp">

                    <ImageView
                        android:id="@+id/menuIconInfo"
                        android:layout_width="27dp"
                        android:layout_height="27dp"
                        android:layout_gravity="center"
                        android:src="@drawable/icon_menu_info" />

                    <TextView
                        android:id="@+id/menuTextInfo"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:text="Info"
                        android:textSize="14sp" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1.0"
                    android:background="@drawable/selected_menu_background"
                    android:orientation="vertical"
                    android:paddingTop="8dp">

                    <ImageView
                        android:id="@+id/menuIconWishlist"
                        android:layout_width="27dp"
                        android:layout_height="27dp"
                        android:layout_gravity="center"
                        android:src="@drawable/icon_wishlist" />

                    <TextView
                        android:id="@+id/menuTextWishlist"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:text="Wishlist"
                        android:textColor="#ffffff"
                        android:textSize="14sp" />

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/menuItemAccount"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0"
                    android:orientation="vertical"
                    android:paddingTop="8dp">

                    <ImageView
                        android:id="@+id/menuIconAccount"
                        android:layout_width="27dp"
                        android:layout_height="27dp"
                        android:layout_gravity="center"
                        android:src="@drawable/icon_menu_account" />

                    <TextView
                        android:id="@+id/menuTextAccount"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:text="Account"
                        android:textSize="14sp" />

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/menuItemCart"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0"
                    android:orientation="vertical"
                    android:paddingTop="8dp">

                    <ImageView
                        android:id="@+id/menuIconCart"
                        android:layout_width="27dp"
                        android:layout_height="27dp"
                        android:layout_gravity="center"
                        android:src="@drawable/icon_menu_cart" />

                    <TextView
                        android:id="@+id/menuTextCart"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:text="Cart"
                        android:textSize="14sp" />

                </LinearLayout>

            </LinearLayout>

            <View

                android:id="@+id/dropShadow"
                android:layout_width="match_parent"
                android:layout_height="5dp"
                android:background="@drawable/drop_shadow"
                android:cacheColorHint="#f1e7dd"
                android:paddingTop="8dp" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">

                <com.example.utils.ExpandableHeightGridView
                    android:id="@+id/wishListGridView"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:columnWidth="80dp"
                    android:gravity="center"
                    android:horizontalSpacing="10dp"
                    android:isScrollContainer="false"
                    android:numColumns="2"
                    android:paddingBottom="@dimen/activity_horizontal_margin"
                    android:paddingLeft="@dimen/activity_horizontal_margin"
                    android:paddingRight="@dimen/activity_horizontal_margin"
                    android:stretchMode="columnWidth"
                    android:verticalSpacing="10dp" />

            </LinearLayout>

        </ScrollView>
    </LinearLayout>


</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我们讨论了这个问题here

尝试在ScrollView中添加一个LinearLayout作为直接子项,并将所有其他布局/控件放在新的LinearLayout中。