问题描述:
ScrollView如果包含GridView或者ListView这样的控件,会导致后者显示不完整。默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,因为它的高度是无法计算的。
所以此问题由来已久,网上的方法很多只解决了问题的一半,另外一半问题是:ScrollView不从开始位置开始显示,如下图:
解决方法:
以ScrollView包含GridView为例。
一、定义自己的Gridview,覆写onMeasure方法
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 defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
这里是为了解决GridView的内容显示不全的问题。
二、设置GridView不自动获取焦点
mGridView.setFocusable(false);
这里是为了解决页面不是从UI起始位置显示的问题。
时间: 2024-10-05 17:33:10