根据已上线的app里总结出来的实用小技巧
当ScrollView嵌套ListView或GridView等控件出现的各种问题, 解决的最佳方案
- ListView或GridView的内容无法全部显示(ListView和GridView用法一样)
解决方案自定义该控件
public class MyGridView extends GridView {
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 重写该方法,达到使GridView 适应ScrollView的效果
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
- 上面问题解决后, 接着就会出现数据加载完页面没有停留在顶部的问题
解决方案让控件失去焦点
//必须在控件初始化后设置, 也不能写在layout中否则不起作用
gridView.setFocusable(false);