adnroidにrecyclerView項目のX&Y座標を取得する方法?

エサン:

私はの項目のビューの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]);
            }
        });
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=277262&siteId=1