我们在使用GridView的时候经常会遇到这样一种情况,GridView的子项ItemView不能充满整个GridView导致界面比较难看
今天,帮大家解决一下这个问题。
这个是奋斗的目标
知识点一 LayoutInflater
LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
传送门:LayoutInflate的inflate函数用法详解
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);
LayoutInflater inflater = LayoutInflater.from(context); (该方法实质就是第一种方法,可参考源代码)
View layout = inflater.inflate(R.layout.main, null);
LayoutInflater inflater = getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
View layout = inflater.inflate(R.layout.main, null);
知识点二 重写Adapter的getView()方法;
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;//非核心代码,Holder的推荐使用
LayoutInflater mInflater = LayoutInflater.from(NamingResult.this);//关键代码,获取View对象
if (convertView == null) {
convertView = mInflater.inflate(
R.layout.item_select, parent,false);//关键代码 ,初始化convertView。
holder = new ViewHolder();
holder.tvItem = (TextView) convertView.findViewById(R.id.tv_item);
holder.ivItem = (ImageView) convertView.findViewById(R.id.iv_item);
ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();//关键代码。获取View -- Layout布局的其属性
layoutParams.height = lin.getHeight() / 2;//获取其高度
convertView.setLayoutParams(layoutParams);//重新设置其高度
convertView.setTag(holder);
} else {
holder= (ViewHolder) convertView.getTag();
}
if(convertView.getHeight()==0){
//第一次调用getView时,parent的高度还是0,所以这里需要判断一下,并且重新设置,否则第一个子项显示不出来
ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();
layoutParams.height = lin.getHeight() / 2;
convertView.setLayoutParams(layoutParams);
}
holder.tvItem.setText(list.get(position).toString());
holder.ivItem.setImageResource(mPicsCallName[position]);
return convertView;
}
如果没有这段代码
if(convertView.getHeight()==0){
//第一次调用getView时,parent的高度还是0,所以这里需要判断一下,并且重新设置,否则第一个子项显示不出来
ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();
layoutParams.height = lin.getHeight() / 2;
convertView.setLayoutParams(layoutParams);
}
就会是这个样子
知识点三 xml布局文件
<GridView
android:id="@+id/gv_setting_call"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="2"
android:stretchMode="columnWidth"
/>