android gridview高度集

android gridview高度集,android,gridview,Android,Gridview,我在scrollview中有一个gridview。应用SimpleAdapter后,gridview的内容(行数)可能会发生更改。但是,gridview的高度保持不变 您知道如何动态更改gridview的高度吗?我尝试了几种设置gridview高度的方法,但没有一种有效 以下是我的部分代码: RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(400, 500); p.topMargin = 60; p.height =

我在scrollview中有一个gridview。应用SimpleAdapter后,gridview的内容(行数)可能会发生更改。但是,gridview的高度保持不变

您知道如何动态更改gridview的高度吗?我尝试了几种设置gridview高度的方法,但没有一种有效

以下是我的部分代码:

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(400, 500);
p.topMargin = 60;
p.height = 600;
gridView.setLayoutParams(p);
但使用上述方法,gridview的高度保持不变

将覆盖gridview的onMeasure方法:

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
    if(isExpanded()){
        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);
    }

}   
XML文件的一部分:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/advanced_interface"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="ntu.fyp.sjy.securitycontroller.MainActivity">

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView 
        android:id="@+id/contact_source" 
        android:layout_width="60dp" 
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp" 
        android:text="@string/contact"/>

    <Switch 
        android:id="@+id/contact_source_switch" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"     
        android:layout_alignBaseline="@+id/contact_source" 
        android:layout_alignBottom="@+id/contact_source"
        android:layout_marginLeft="70dp" 
        android:layout_marginTop="40dp"
        android:layout_alignParentRight="true" 
        android:layout_marginRight="26dp"
        android:onClick="contactSourceToggle"/>

    <ntu.fyp.sjy.securitycontroller.MyGridView
        android:id="@+id/contact_source_grid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/contact_source"
        android:isScrollContainer="false"
        android:numColumns="1"
        android:verticalSpacing="1dp"/>

</RelativeLayout>

</ScrollView>

以下是要在gridview中调整的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">


<TableLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" 
android:shrinkColumns="0">

<TableRow
    android:id = "@+id/source_tableRow1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/source_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:paddingLeft="10dp"
        android:scaleType="fitStart"/>

    <TextView
        android:id="@+id/source_app_title"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="0dp"/>

    <CheckBox
        android:id="@+id/source_app_check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="0dp" />

</TableRow>

<TableRow
    android:id = "@+id/source_tableRow_internet"
    android:layout_width = "fill_parent"
    android:layout_height="wrap_content"
    android:gravity = "center_horizontal"
    android:visibility="gone">

        <TextView
            android:id="@+id/sink_internet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/internet"/>

        <CheckBox
            android:id="@+id/sink_internet_check"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
</TableRow>

<TableRow
    android:id = "@+id/source_tableRow_file"
    android:layout_width = "fill_parent"
    android:layout_height="fill_parent"
    android:gravity = "center_horizontal"
    android:visibility="gone">

        <TextView
            android:id="@+id/sink_file"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/file"/>

        <CheckBox
            android:id="@+id/sink_file_check"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

</TableRow>


根据用户输入,表行源\u tableRow\u文件和源\u tableRow\u internet可能设置为可见或消失。如何根据父滚动视图中的总行数调整gridview的高度???

放置android:fillViewport=“true”属性。它将允许滚动视图填充整个高度或扩展(如果需要)。感谢您的回复!我试过了,但没用。还有其他建议吗?