众所周知,google不建议在滑动view中嵌套滑动view,但我们有些设计师总是那么逗逼,喜欢设计的自以为很有美感的设计图,奈何,路漫漫其修远兮,只能去实现。
大家遇到ScrollView嵌套GridView等,其实原理都是一样,需要先确定内层的view的height然后外层才能绘制,所以很多人比如github上给出的
public class ExpandableHeightGridView extends GridView {
boolean expanded = false;
public ExpandableHeightGridView(Context context) {
super(context);
}
public ExpandableHeightGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ExpandableHeightGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public boolean isExpanded() {
return expanded;
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (isExpanded()) {
int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
public void setExpanded(boolean expanded) {
this.expanded = expanded;
}
}
就是在绘制的时候动态获取高度,重新动态赋值高度,这是能解决的,但是当item的高度不固定的时候,这个方法是失败的,一般做法是让item高度固定,当然这要考虑到屏幕适配的问题。
文章介绍了在Android开发中解决ScrollView嵌套GridView时遇到的问题及解决方案。通过自定义ExpandableHeightGridView类,在绘制时动态获取子项高度并重新赋值,以解决因内部视图高度不确定导致的布局问题。
8427

被折叠的 条评论
为什么被折叠?



