在 RecyclerView 中获取一行的宽度和高度 - Android
Posted
技术标签:
【中文标题】在 RecyclerView 中获取一行的宽度和高度 - Android【英文标题】:Get Width and Height of one row in RecycleView - 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。 【参考方案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));
此处为原始和完整答案:***.com/a/38765295/4344964
非常适合我!以上是关于在 RecyclerView 中获取一行的宽度和高度 - Android的主要内容,如果未能解决你的问题,请参考以下文章
android studio中使用recyclerview小白篇