我正在尝试在滚动视图中展开gridview,但是当设置高度为800dp时,它会将最后一项显示为半项 设置高度match_parent
时不展开这是我的类,以扩展gridView
公共类ExpandableHeightGridView扩展了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;
}
}
和gridview的所有xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:fillViewport="true"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:id="@+id/relative1"
android:layout_width="fill_parent"
android:layout_height="250dp"
android:layout_alignParentTop="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle2"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:background="#424242" />
<ImageButton
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@drawable/previous"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="10dp"
android:id="@+id/btprevious"/>
<ImageButton
android:id="@+id/btnext"
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@drawable/next"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_margin="10dp"/>
</RelativeLayout>
///////
<LinearLayout
android:id="@+id/mainlin"
android:layout_below="@+id/relative1"
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="#424242"
android:orientation="horizontal">
linear layout
<LinearLayout
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="2"
android:id="@+id/lin1"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img1"/>
<TextView
android:id="@+id/tex1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="200dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin2"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img2"/>
<TextView
android:id="@+id/tex2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
linearlayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin3"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img3"/>
<TextView
android:id="@+id/tex3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin4"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img4"/>
<TextView
android:id="@+id/tex4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
</LinearLayout>
////
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin5"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img5"/>
<TextView
android:id="@+id/tex5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
here agridView Cast
<ExpandableHeightGridView
android:layout_width="match_parent"
android:layout_height="800dp"
android:layout_below="@+id/mainlin"
android:id="@+id/grid2"
android:numColumns="3"
android:verticalSpacing="5dp"
android:horizontalSpacing="5dp"
android:stretchMode="columnWidth"
android:background="#424242"
android:isScrollContainer="true"
android:scrollbars="vertical"/>
end of xml
</RelativeLayout>
</ScrollVi
我不知道如何解决这个问题。
答案 0 :(得分:1)
我已经尝试了你的布局,经过一些改动,它在我这边工作得很好。我希望它也适合你。在这里尝试一下:
<ScrollView 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:fillViewport="true"
android:layout_marginBottom="5dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<RelativeLayout
android:id="@+id/relative1"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_alignParentTop="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle2"
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="#424242" />
<ImageButton
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@drawable/previous"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="10dp"
android:id="@+id/btprevious"/>
<ImageButton
android:id="@+id/btnext"
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@drawable/next"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_margin="10dp"/>
</RelativeLayout>
<LinearLayout
android:id="@+id/mainlin"
android:layout_below="@+id/relative1"
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="#424242"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="2"
android:id="@+id/lin1"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img1"/>
<TextView
android:id="@+id/tex1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="200dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin2"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img2"/>
<TextView
android:id="@+id/tex2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin3"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img3"/>
<TextView
android:id="@+id/tex3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin4"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img4"/>
<TextView
android:id="@+id/tex4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
</LinearLayout>
////
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin5"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img5"/>
<TextView
android:id="@+id/tex5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<ExpandableHeightGridView
android:layout_width="match_parent"
android:layout_height="800dp"
android:layout_below="@+id/mainlin"
android:id="@+id/grid2"
android:numColumns="3"
android:paddingBottom = "5dp"
android:verticalSpacing="5dp"
android:horizontalSpacing="5dp"
android:stretchMode="columnWidth"
android:background="#424242"
android:isScrollContainer="true"
android:scrollbars="vertical"/>
</RelativeLayout>
</ScrollView>
希望它会对你有所帮助。