【简述】
为了更好的用户体验,开发的需求还是很变态的,各种嵌套,各种引用,大家都懂的,经常用的如题......
一、【分析】
ScrollView中嵌套ListView或者GridView,条目显示不全,不外乎就是遍历的时候内部的条目高度没有计算出来导致页面绘制出问题。所以最好的解决方案就是让其内部的条目,自动计算高度,才能和ScrollView完美结合在一起;
二、【方法】自定义ListView或者GridView,然后在布局文件中引用就OK了
/**
* Description:自定义ListView,解决ScrollView中嵌套ListView显示不正常的问题
* 通过动态计算item的高度去自动适配
* Author: created by WangKeZe on 2018/7/2 21:11
* Email: wkz0917@163.com
*/
public class ScrollListView extends ListView {
public ScrollListView(Context context) {
super(context);
}
public ScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
/**
* Description: 自定义gridview,解决ScrollView中嵌套gridview显示不正常的问题
* Author: created by WangKeZe on 2018/7/5 22:09
* Email: wkz0917@163.com
*/
public class ScrollGridView extends GridView {
public ScrollGridView(Context context) {
super(context);
}
public ScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
网友评论