在一项活动中,我需要两个GridView,每个GridView都需要尽可能多的高度。 gridview没有单独的滚动条,但它们只有一个滚动条。 我试过这样的事情。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView
android:id="@+id/gridView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" //as much height as it needs
android:background="#9C5353"
android:gravity="center"
android:horizontalSpacing="20dp"
android:numColumns="2"
android:layout_weight="1"
android:scrollbars="none"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" >
</GridView>
<GridView
android:id="@+id/gridView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" //as much height as it needs
android:scrollbars="none"
android:numColumns="1"
android:layout_weight="1"
android:horizontalSpacing="20dp"
android:verticalSpacing="20dp"
android:gravity="center"
android:stretchMode="columnWidth" >
</GridView>
</LinearLayout>
我尝试了很多次,但无法得到任何解决方案。 请任何人都可以解决这个问题吗?
答案 0 :(得分:1)
你可以设置 GridView 固定,并使用 ScrollView 包含它们
public class FixedGridView extends GridView {
public FixedGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public FixedGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FixedGridView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
答案 1 :(得分:1)
根据tesla1984的回答,这是我完整的工作代码。它按预期工作:
创建一个名为FlexGridView的新类,如下所示,并将其保存在项目内的已知位置。 (我使用了名为&#34; views&#34;)的文件夹
package your.project.id.views;
public class FixedGridView extends GridView {
public FixedGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public FixedGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FixedGridView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
然后,在您的XML上,执行以下操作:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<your.product.id.views.FixedGridView
android:id="@+id/gridViewPublic"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numColumns="1"
android:stretchMode="columnWidth"
android:horizontalSpacing="10"
android:verticalSpacing="10"
android:background="@color/transparent_color" />
<your.product.id.views.FixedGridView
android:id="@+id/gridViewPrivate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10"
android:layout_marginBottom="10"
android:numColumns="2"
android:stretchMode="columnWidth"
android:horizontalSpacing="10"
android:verticalSpacing="10"
android:background="@color/transparent_color" />
</LinearLayout>
</ScrollView>