【问题标题】:Change size of only one item in GridView在 GridView 中仅更改一项的大小
【发布时间】:2016-03-09 06:53:47
【问题描述】:
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
    viewHolder.button.setText("button" + +position);    
    if(position == 0){
        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams);
        viewHolder.button.getLayoutParams();
        params.height = 200;
        params.width = 200;
        viewHolder.itemView.setLayoutParams(params);
    }else{
        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams);
        viewHolder.button.getLayoutParams();
        params.height = RecyclerView.LayoutParams.WRAP_CONTENT;
        params.width = RecyclerView.LayoutParams.WRAP_CONTENT;
        viewHolder.itemView.setLayoutParams(params);
    }
}

GridView 的适配器中使用此代码我试图为GridView 的第一项提供自定义大小,但它会更改行中所有项目的大小,但其他列的项目保持正常。 那么如何在GridView 中只更改一项?

【问题讨论】:

  • 您的 if 需要一个 else 部分。请记住,同一个视图会被多个项目回收
  • 我的if 中也有一个else 部分,我缩短了代码以使其清楚。 else 也存在同样的问题
  • 在你的else块中,你设置了高度和宽度吗?
  • 是的,我设置为原始高度和宽度,即 RecyclerView.LayoutParams.WRAP_CONTENT
  • 请编辑您的问题以添加该信息

标签: android gridview android-gridview android-inflate android-layoutparams


【解决方案1】:
if(position == 0){
    RecyclerView.LayoutParams params = (RecyclerView.LayoutParams);
    viewHolder.button.getLayoutParams();
    params.height = 200;
    params.width = 200;
    viewHolder.itemView.setLayoutParams(params);
}else{
   //make other item normal
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2014-01-14
    • 2013-04-10
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多