1、在gridview中,如果使用的图片控件进行展示,在满足与不满足条件情况下给控件设置图片,如果设置背景统一用设置背景(如setBackgroundResource())的方法,如果设置 资源图片统一使用该方法(如setImageResource());否则调用setBackgroundResource()方法的控件可能无法正确显示所要的背景,正确的效果应该如图
//如果满足条件设置一张图片
if("addImagePath".equalsIgnoreCase(path)){
holder.imgThun.setImageResource(R.drawable.neighbor_test_7);
}else{
//如果不满足条件设置为另一张图片
holder.imgThun.setTag(R.drawable.ic_default);
}
2、当gridview嵌套在scroolview中时,当行数大于1时,显示不完全,可以动态获取grivew的高度,再重新设置,显示正确的效果图
//通过下面的三句话进行gridview的高度设置
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) image_gridview.getLayoutParams();
linearParams.height =getGridViewHeight(image_gridview);
image_gridview.setLayoutParams(linearParams);
//所需调用的方法
/**
* 动态获取gridview实际高度
* @param gridview
* @return
* @author jinL
*/
private int getGridViewHeight(GridView listView) {
SendPictureAdapter sendPictureAdapter = (SendPictureAdapter) image_gridview
.getAdapter();
int totalHeight = 0;
int count = (sendPictureAdapter.getCount()-1)/4;
for (int i = 0; i <= count; i++) {
View gridviewItem = sendPictureAdapter.getView(count*4, null, listView);
gridviewItem.measure(0,0);
gridviewItem.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));
totalHeight+=gridviewItem.getMeasuredHeight();
}
return totalHeight;
}
3、在getView()方法中设置条目的宽高时,需设置为GridView.LayoutParams而不是ViewGroup.LayoutParams
setLayoutParams(new GridView.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
}