在Android的项目中,我们经常会使用到布局的嵌套,虽然google并不推荐我们在ScrollView中去嵌套ListView/GridView,但是在国内的项目之中或多或少的都会使用到这样的嵌套.
而在ScrollView中去嵌套ListView/GridView的时候,会出现定位不准确的问题,也就是说,在已进入页面的时候,页面会自动定位到ListView/GridView的位置,而不是ScrollView的开始位置。
那为什么会这样那?原因其实很简单,是因为ListView/GridView抢夺了ScrollView的焦点的原因。明白了问题的所在要处理起来就很容易了. 有两种办法去处理这个问题
1、取消掉LsitView/GridView的焦点.
setFocusable(false);
2、强定义父视图的焦点
android:focusableInTouchMode="true"
android:focusable="true"
附上嵌套如ScrollView的LsitView/GridView的代码.
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
站在巨人的肩膀上,我们才能看的更远!