0

考虑我的场景,我在其中有一个相对布局,一个包含 6 列的网格视图,我在其中解析和显示 json 数据。它工作正常。但是当我在下面添加更多行数时,我为此保留了一个滚动查看器。事情首先是它正确地显示了细节。但是滚动后,值会发生变化,并且不会以正确的方式显示。即,表值的顺序不准确,因为它来自 json。它因每个滚动而异。(第一个值进入第三位,第二个值进入第 6 列,等等。)我不知道确切的问题是什么。你能帮帮我吗..

另外我还有一个小问题,我的应用程序的堆大小不断增加(目前它显示 742M 中的 373M)。我检查了解决方案。尝试添加代码 android:largeHeap="true" 但这也不起作用。

提前感谢您的解决方案!

4

1 回答 1

1

使用自定义 Gridview ExpandableHeightGridView在滚动视图中添加网格视图

请按照以下示例进行操作

ExpandableHeightGridView.java

        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.
        // But do not use the highest 2 bits of this integer; those are
        // reserved for the MeasureSpec mode.
        int expandSpec = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, 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;
}
}

xml文件

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scroll"
android:background="@android:color/white" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white" >


     <RelativeLayout
    android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@android:color/white" >

    <TextView
        android:id="@+id/txbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="9dp"
        android:text="Textview"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#2c627e"
        android:textStyle="bold" />
</RelativeLayout>


    <yourpackagename of ExpandableHeight.class.ExpandableHeightGridView
        android:id="@+id/gridlist"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:horizontalSpacing="10dp"
        android:layout_below="@+id/header"
        android:numColumns="2"
        android:scrollbarStyle="outsideOverlay"
        android:scrollbars="vertical"
        android:verticalScrollbarPosition="right"
        android:verticalSpacing="10dp" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:background="#034E6D"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:id="@+id/view_rl"
        android:layout_below="@+id/gridlist" >

        <!--
         <TextView
        android:id="@+id/newsdata_grid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/newsdatas"

        android:text="juijb"
        android:maxLines="3"
        android:layout_marginLeft="10dp"
        android:textSize="20dp" />
        -->

        <ImageView
            android:id="@+id/datas_images"
            android:layout_width="60dp"
            android:layout_height="50dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginTop="5dp"
            android:adjustViewBounds="true"
            android:src="@drawable/bike_icon" />

        <TextView
            android:id="@+id/data_grids"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/datas_images"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:text="VIEWS"
            android:textColor="@android:color/white"
            android:textSize="10dp" />
    </RelativeLayout>
    <View android:layout_width="fill_parent"
        android:layout_height="10dp"
        android:background="@android:color/white"
        android:layout_below="@+id/view_rl"/>
</RelativeLayout>

在 Activity 类中

    ExpandableHeightGridView gridview=(ExpandableHeightGridView)findViewById(R.id.gridlist);
    gridview.setExpanded(true);

这将在滚动视图中显示一个网格视图,希望这会对您有所帮助

于 2013-12-12T11:06:40.597 回答