GridView只显示两列

我以编程方式创build了一个在对话框中使用的图像的GridView。 如果我将列设置为自动调整,则无论图像的大小和屏幕大小如何,我总是会得到两列。 如果我强制列的数量是固定的,那么它的工作原理,但我不能避免图像重叠在一定的屏幕大小,所以自动pipe理的列数会好很多。 更重要的是,当我尝试设置拉伸,它根本不显示任何东西!

我的ImageAdapter:

public class ImageAdapter extends BaseAdapter { private Context mContext; // Constructor public ImageAdapter(Context c){ mContext = c; } public int getCount() { return (IconC.Res.length); } public Object getItem(int position) { return (IconC.Res[position]); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); } else { imageView = (ImageView) convertView; } imageView.setImageResource(IconC.Res[position]); return (imageView); } } 

而创build对话框(在别处用.show())调用的函数

  private void createPopUp() { d_icons = new Dialog(this); GridView gv_icons = new GridView(this); // gv_icons.setNumColumns(GridView.AUTO_FIT); // autofit disabled, shows ONLY TWO COLUMNS gv_icons.setNumColumns(4); // instead, autofit forced, now it works, but I don't want it fixed! gv_icons.setGravity(Gravity.CENTER); gv_icons.setHorizontalSpacing(3); gv_icons.setVerticalSpacing(1); // gv_icons.setStretchMode(GridView.STRETCH_SPACING); // stretching disabled, shows ZERO COLUMNS gv_icons.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); gv_icons.setAdapter(new ImageAdapter(this)); gv_icons.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick (AdapterView<?> parent, View view, int position, long id) { eventIcons.set(selectedItem, position); updateEventView(); d_icons.dismiss(); } }); d_icons.setTitle(R.string.text_chooseicon); d_icons.addContentView(gv_icons, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); d_icons.setCancelable(true); } 

任何人都可以发现为什么发生这种情况 谢谢!!

以下是4个固定列的显示方式:i50.tinypic.com/2ebdfec.png

这是自动调整的方式:i50.tinypic.com/25jxo9s.png

这是在水平选项卡上自动调整的布局:i49.tinypic.com/23r7qj5.png

Solutions Collecting From Web of "GridView只显示两列"

这篇文章回答你的问题: Android:GridView的auto_fit如何find列的数量?

为了让auto_fit工作,你需要指定列的宽度:gridView.setColumnWidth(width);

其实这取决于设备的大小。 当你第一次testing你的应用程序时,修改了列的数目,网格显示只有2列,因为3图像的空间不够大,以致它可以适应。