在 GridView 中动态填充而不是通过 XML

Padding in GridView Dynamically not via XML

我想在 Gridview 中设置 Padding 就像在 listview 中的 listview 我们有这样的功能

ListView lv;
    index = lv.getFirstVisiblePosition();
 v = lv.getChildAt(0);
 top = (v == null) ? 0 : (v.getTop() - lv.getPaddingTop());
lv.setSelectionFromTop(index,top);

但是在gridview中我们没有这样的功能。

我们只有

GridView gridview;
gridview.setSelection(index);

通过这个函数。当用户滚动 GridView 时,我无法保存和设置填充。它只设置索引而不设置填充

我想保存padding 也设置一下

这是我的自定义适配器的 getView() 方法

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        View row = convertView;
        MyStringReaderHolder holder;

        if(row==null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent,false);
            holder= new MyStringReaderHolder();
          // holder.gtumcaTvFirstName =(TextView)row.findViewById(android.R.id.candidatesArea);
          holder.gtumcaTvLastName =(TextView)row.findViewById(R.id.songTitle);
     //   holder.gtumcaTvBirthDate  =(TextView)row.findViewById(R.id.songTitle2);
            //holder.gtumcaIvIcon=(ImageView) row.findViewById(android.R.id.candidatesArea);
           row.setTag(holder);
        }
        else
        {
            holder=(MyStringReaderHolder) row.getTag();
        }
        GtuMcaBean mrb =data.elementAt(position);
     //  holder.gtumcaTvFirstName.setText(mrb.gtumcaFirstName);
        holder.gtumcaTvLastName.setText(mrb.gtumcaLastName);
 // holder.gtumcaTvBirthDate.setText(mrb.gtumcaBirthdate);
       //holder.gtumcaIvIcon.setImageResource(R.drawable.ic_launcher);
        return row;
    }

我似乎 setSelectionFromTop GridView。看到这张图片

可能您应该更新 API 级别或您在 post 中使用的其他环境设置。

编辑

请尝试使用 smoothScrollToPositionFromTop,因为 setSelectionFromTop 存在 bug