【问题标题】:Set empty cell in the middle of android GridView layout在android GridView布局中间设置空单元格
【发布时间】:2015-01-31 00:11:02
【问题描述】:

我正在使用 gridview 布局开发我的项目,整个代码与 Android 开发者示例非常相似(由于我的声誉低,我无法发布链接,抱歉)。

当我需要用 3*3 或 4*4(等等)网格填充屏幕时,它的效果非常好,但现在我必须设计只有 8 个图像视图的网格视图,并且我想在中间设置空单元格GridView,就像那样(点击查看图片):

这是我现在的位置:

这是我需要做的:

我已经用谷歌搜索了很多,但我找不到一些示例来说明如何实现它。 你知道我该如何解决这个问题吗?

将其设置为不可见 -

imageView.setVisibility(View.INVISIBLE);

不适合我,因为我“丢失”了我的一个 imageViews。

非常感谢!

【问题讨论】:

  • 创建透明中间图片!
  • 您的 GridView 上总是有 7 个项目吗?还是 (x*x)-1 项?
  • 嘿@NguyenDoanTung,我已经编辑了我的问题。你能再检查一遍吗?谢谢。

标签: android gridview


【解决方案1】:

假设您的GridView 中的项目数量始终为(x*x),其中x 是大于1 的奇数,例如3 或5。您要隐藏的项目的索引是items.size()/2。请注意,在 Android 中,9/2 = 4 和 25/2 = 12。所以,我们已经知道应该隐藏的项目的索引。

接下来,在代码中,当您为该索引调用 adapter.getView() 方法时,您只需让您的项目 View 保持不可见。这是代码的getView() 部分:

@Override
public View getView(final int position, View convertView, ViewGroup parent) 
{

    ViewHolder viewHolder;

    LayoutInflater inflater = yourContext.getLayoutInflater();

    if(convertView==null)
    {

        viewHolder = new ViewHolder();

        convertView = inflater.inflate(R.layout.your_grid_item_layout, null);

        convertView.setTag(viewHolder);

    }
    else
    {
        viewHolder = (ViewHolder) convertView.getTag();
    }


    if(position == yourItemsList.size()/2){
        convertView.setVisibility(View.INVISIBLE);
    }
    else{
        convertView.setVisibility(View.VISIBLE);
    }

    return convertView;

}

这将使您的中间 View 不可见。你想要的效果。

另请注意,您的GridView 行数必须等于此方法的行数才能正常工作。

您始终可以根据您拥有的项目数动态更改行数。在您的Activity 代码中,在gridView.setAdapter() 之前,如下所示:

    gridView.setNumColumns((int) Math.sqrt(myItemsList.size()));

我再次警告您,此代码仅适用于 GridView 3*3、5*5、7*7 等配置。

【讨论】:

  • 嘿@joao2fast4u!抱歉这么长的回复,我有一段艰难的考试期。我已经编辑了我的原始帖子,您可以再检查一下吗?我坚持了一段时间......非常感谢你的帮助。非常感谢!
  • 您是否尝试实施我的解决方案?
  • 是的。当我使用(View.INVISIBLE) 实现时,适配器从我的 imageviews 数组中获取 imageview 并将他设置为不可见。但在那种情况下,我“丢失”了我的图像视图。因为他们每个人都不一样。我需要的是,当位置 == 5(例如)时,适配器将通过(或不采用)imageview。看看我附在问题上的两张图片,这是最好的解释。感谢您的快速回复!
  • 其实这是一个简单的记忆游戏,所以gridview的大小取决于level。它从 3*3 开始到 7*6。数组中图像视图的数量取决于每个级别并在变化。
  • 如果没有中间单元格,你将如何在 7*6 布局中隐藏中间单元格?
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
相关资源
最近更新 更多