我在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>
表格行source_tableRow_file&amp; source_tableRow_internet可能根据用户输入设置为可见或消失。如何根据总行数
调整gridview的高度