Android 开发中一些不得不知的坑(二)

如何正确的在ScrollView里做嵌套

日常开发中,经常会遇到ScrollView嵌套ListView,GridView或者是ViewPager,更有甚者是ScrollView嵌套ScrollView,这样一来必然会导致一系列的问题,比如ListView显示不全,滑动冲突等等。这里就各种坑做一下总结。

嵌套的内容不可见

第一次遇见这种嵌套时,就是很单纯的在ScrollView里套了一个ListView,结果就是ListView只显示一行,当时还一直以为是Adapter没写好,各种调试,后来才想到这种嵌套的问题,各种百度之后解决,后来学聪明了,嵌套在ScrollView里的控件,一般都需要继续后自己动动手脚。

常见的解决办法

  • 重写onMeasure方法
@Override

/**   重写该方法,达到使ListView适应ScrollView的效果   */ 

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

还有一种情况是,ScrollView里嵌套的ViewPager不可见了,除非将ViewPager高度设置成固定值,但在实际当中,这完全是不可取的,这个时候就需要给

  • ScrollView设置属性

android:fillViewport=”true”

再有一种情况就是第一次进入界面时动态加载listview的items后页面会跳转到listview的第一个子项,这个问题其实特别令人无语,尤其当下应用都是多个Fragment切换,每次一次都会莫名其妙的跳转到ListView的第一行。关于这个问题的解决方法是,在findViewByID获取到这个ListView后,做如下处理;

  • listView实现方法
listview.setFocusable(false);

好了,就下记下这些坑,以后遇到的继续记。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章