gpt4 book ai didi

android - GridView 只显示两列

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:40:55 27 4
gpt4 key购买 nike

我以编程方式创建了一个要在对话框中使用的图像 GridView。如果我将列设置为自动调整,无论图像大小和屏幕大小如何,我总是会正好得到两列。如果我将列数强制为固定数量,那么它会起作用,但我无法避免图像在某些屏幕尺寸上重叠,因此自动管理列数会好得多。更重要的是,当我尝试设置拉伸(stretch)时,它根本不显示任何内容!

我的图像适配器:

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);
}
}

创建对话框的函数(在别处用 .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

最佳答案

这篇文章回答了您的问题: Android: How does GridView auto_fit find the number of columns?

为了使 auto_fit 起作用,您需要指定列宽:gridView.setColumnWidth(宽度);

关于android - GridView 只显示两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com