【问题标题】:Get Width and Height of one row in RecycleView - Android在 RecyclerView 中获取一行的宽度和高度 - Android
【发布时间】:2015-09-18 14:15:12
【问题描述】:

我正在用一些项目创建RecycleView。所以需要得到RecycleView这一行的宽高

我在这里创建RecycleView

    RecyclerView rvSmetki = (RecyclerView) findViewById(R.id.rvArtikli);
    rvSmetki.setLayoutManager(new GridLayoutManager(this, 3););
    rvSmetki.setAdapter(new ArtikliAdapter(this));

    // Here I want to get width and height....

这是我的 ArtikliAdapter:

public class ArtikliAdapter extends RecyclerView.Adapter<ArtikliAdapter.ViewHolder> {

    private static Context context;

    private LayoutInflater inflater;
    private ArrayList<Artikl> artikliList;

    public ArtikliAdapter(Context context) {
        this.context = context;
        inflater = LayoutInflater.from(context);
        artikliList = LogInActivity.getArtiklList();
    }

    @Override
    public ArtikliAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View row = inflater.inflate(R.layout.artikli_row, parent, false);
        return new ArtikliAdapter.ViewHolder(row);
    }

    @Override
    public void onBindViewHolder(ArtikliAdapter.ViewHolder holder, int position) {
        Artikl currentArtikl = artikliList.get(position);

        holder.tvNaziv.setText(currentArtikl.getNaziv());
        holder.tvCena.setText("Цена: " + currentArtikl.getProdaznaCena());
    }

    @Override
    public int getItemCount() {
        return artikliList.size();
    }

    static class ViewHolder extends RecyclerView.ViewHolder {

        private RelativeLayout rlArtikl;
        private TextView tvNaziv;
        private TextView tvCena;

        public ViewHolder(View itemView) {
            super(itemView);

            rlArtikl = (RelativeLayout) itemView.findViewById(R.id.rlArtikl);
            tvNaziv = (TextView) itemView.findViewById(R.id.tvNaziv);
            tvCena = (TextView) itemView.findViewById(R.id.tvCena);
        }
    }
}

如何获取一行的宽度和高度?

【问题讨论】:

  • 您好,您的问题解决了吗?我得到了返回值 0。

标签: java android height width


【解决方案1】:
@Override
public void onBindViewHolder(final MyAdapter.MyViewHolder holder, int position) 
{
 .....
    holder.itemView.post(new Runnable()
    {
        @Override
        public void run()
        {

            int cellWidth = holder.itemView.getWidth();// this will give you cell width dynamically
            int cellHeight = holder.itemView.getHeight();// this will give you cell height dynamically

        }
    });
  .....
}

希望对你有帮助!!

【讨论】:

  • 它返回0。但实际上我想在Activity中获取宽度和高度,而不是在Adapter中......
  • 使用接口将此数据发送回活动
  • 是的,它返回 0。不工作 @AmrutBidri。你能解释得更详细些吗/
  • 这将返回0。正确的方法是先手动测量View。然后获取宽度和高度。 view.measure( View.MeasureSpec.makeMeasureSpec(recyclerViewWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 此处为原始和完整答案:stackoverflow.com/a/38765295/4344964
  • 非常适合我!
猜你喜欢
  • 1970-01-01
  • 2011-06-12
  • 2012-08-17
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
相关资源
最近更新 更多