我试着把GridView放在安卓系统的ScrollView里。当我把GridView不工作的时候。
这是布局。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_home"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/layout_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/programacao_grid"
android:numColumns="auto_fit"
android:gravity="center"
android:columnWidth="50dp"
android:stretchMode="columnWidth"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/calendario_programacao"
>
</GridView>
</RelativeLayout>
</ScrollView>
经过多次搜索,我找到了答案,如下所示
发布于 2014-07-18 01:10:46
经过搜索,我找到了这个项目link:
ExpandableHeightGridView
类
package xx.xxx.xx.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.GridView;
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.
// View.MEASURED_SIZE_MASK represents the largest height possible.
int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK,
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;
} }
layout.xml
文件:
<ScrollView
android:id="@+id/sc_spots"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true" >
<xx.xxx.xx.view.ExpandableHeightGridView
android:id="@+id/spotsView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:horizontalSpacing="10dp"
android:isScrollContainer="false"
android:numColumns="5"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
</ScrollView>
使用GridView
类
mGridView = (ExpandableHeightGridView)
getView().findViewById(R.id.spotsView);
mGridView.setExpanded(true);
SpotsAdapter adapter = new SpotsAdapter(getActivity(),R.layout.spot_item,params);
mGridView.setAdapter(adapter);
adapter.notifyDataSetChanged();
发布于 2019-06-05 16:44:29
值得一提的是,@Igor Ronner提供的解决方案很棒,但由于未知的原因,在我的应用程序中仍然完成了一半-在滚动视图中,网格视图就像根本不存在一样。
我花了几乎半天的时间,多次尝试填充另一半--使用相对布局包装到网格视图,让它自动增长,就像这样(最终为我工作的实际代码!):
<RelativeLayout
android:id="@+id/grid_view_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_catalog"
>
<com.takken.app.android.component.framework.ExpandableGridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="2"
android:horizontalSpacing="12dp"
android:verticalSpacing="12dp"
/>
</RelativeLayout>
https://stackoverflow.com/questions/21264951
复制相似问题