在ListView中嵌套GridView,GridView显示不全,重写GridView类的 onMeasure() 方法
public class GridViewForListView extends GridView {
public GridViewForListView(Context context) {
super(context);
}
public GridViewForListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
还有一个问题是 ImageView的高度怎么按比例跟随宽度,(宽度是自动适配屏幕的),现在的笨方法是
得到屏幕宽度 - 间隔的宽度(dp转px)/ 列数 = 每个图的宽度 * 图片的长宽比 =得到 图片的高度
dp转px还需要得到屏幕的密度
private int screenWidth; //屏幕的宽度px
private int densityDpi; // 屏幕密度Dpi
DisplayMetrics metric = new DisplayMetrics();
((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metric);
screenWidth = metric.widthPixels;
densityDpi = metric.densityDpi;
ViewGroup.LayoutParams lp = viewHolder.imageView.getLayoutParams();
lp.height = (int)(((screenWidth - (16 + 72*(densityDpi/160)))/3) * 1.0693 );
viewHolder.imageView.setLayoutParams(lp);