2014年江苏高考分数线,tcl集成灶,郑恩地
在做android项目中遇到一个bug,gridview嵌套在scrollview里只有一行的问题。下面小编在网上找到了解决方法,具体方法如下所示:
方法一:就是上面说的通过计算出来listview或者gridview中的子列高度和 进行显示:
public void setlistviewheightbasedonchildren(listview listview) { listadapter listadapter = listview.getadapter(); if (listadapter == null) { return; } int totalheight = 0; for (int i = 0; i < listadapter.getcount(); i++) { view listitem = listadapter.getview(i, null, listview); listitem.measure(0, 0); totalheight += listitem.getmeasuredheight(); } viewgroup.layoutparams params = listview.getlayoutparams(); params.height = totalheight + (listview.getdividerheight() * (listadapter.getcount() - 1)); ((marginlayoutparams)params).setmargins(15, 15, 15, 15); listview.setlayoutparams(params); }
方法二:重写gridview和listview的onmeasure方法,直接给它一个足够大的高度:
重写listview:
public class mylistview extends listview { public mylistview(context context) { // todo auto-generated method stub super(context); } public mylistview(context context, attributeset attrs) { // todo auto-generated method stub super(context, attrs); } public mylistview(context context, attributeset attrs, int defstyle) { // todo auto-generated method stub super(context, attrs, defstyle); } @override protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { // todo auto-generated method stub int expandspec = measurespec.makemeasurespec(integer.max_value >> 2, measurespec.at_most); super.onmeasure(widthmeasurespec, expandspec); } }
重写gridview:
public class mygridview extends gridview{ public mygridview(context context, attributeset attrs) { super(context, attrs); } public mygridview(context context) { super(context); } public mygridview(context context, attributeset attrs, int defstyle) { super(context, attrs, defstyle); } @override public void onmeasure(int widthmeasurespec, int heightmeasurespec) { int expandspec = measurespec.makemeasurespec(integer.max_value >> 2, measurespec.at_most); super.onmeasure(widthmeasurespec, expandspec); } }
xml中的布局:
<com.xxx.mygridview android:id="@+id/mygridview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:horizontalspacing="5dp" android:numcolumns="4" android:stretchmode="columnwidth" android:verticalspacing="6dp" />
以上所述是小编给大家介绍的android 中 gridview嵌套在scrollview里只有一行的解决方法,希望对大家有所帮助
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论