エサン:
私はの項目のビューのXとY座標を取得したいですrecyclerview
。私が使用getLocationOnScreen()
する方法を私は、ビューのX / Yを得ることができ、それは、X&Yの方法の両方に0を返しますか?
私はアンドロイドの開発に新たなんだと、私を助けてください:)
@Override
public void onBindViewHolder(@NonNull final TaskViewHolder holder, final int position) {
Model model = datalist_model.get(position);
holder.tv_title.setText(model.getTitle());
holder.tv_comment.setText(model.getComment());
int[] screen = new int[2];
holder.iv_status.getLocationOnScreen(screen);
Log.d(TAG, "x :" + screen[0] + " , y : " + screen[1]);
}
マハディM:
アイテムのビューとして完全に作成されていないので、あなたの問題は、あるgetLocationOnScreen()
X / Yの両方のためのメソッドの戻り0!
あなたは、実装にご希望の座標を達成することができますaddOnGlobalLayoutListener()
方法をonBindViewHolder()
。
以下のような何か:
@Override
public void onBindViewHolder(@NonNull final TaskViewHolder holder, final int position) {
Model model = datalist_model.get(position);
holder.tv_title.setText(model.getTitle());
holder.tv_comment.setText(model.getComment());
holder.itemView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Remove the listener before proceeding
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
holder.itemView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
else
holder.itemView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int[] screen = new int[2];
holder.iv_status.getLocationOnScreen(screen);
Log.d(TAG, "x :" + screen[0] + " , y : " + screen[1]);
}
});
}