android - 单击时 RecyclerView 项目的 X 和 Y 为 0

标签 android android-recyclerview

RecyclerView 中,我试图获取被点击项目的 X 和 Y 位置。 这是我的适配器内部:

@Override
    public void onBindViewHolder(AlfabetoViewHolder holder, final int position) {
       // setImage(holder.imageButton, images.get(position));

        holder.imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.getX(); // This is 0, but it shouldn't be!
                view.getY(); // This is also 0.
                executaSomAnimacaoLetra(sounds.get(position), Utils.getResourceFromFile(popups.get(position), context), view); // I do some stuff here
            }
        });


    }

事实是,X 和 Y 总是返回 0,而且它们不应该返回。我需要点击项目的 X 和 Y 来做一些动画。

我已经尝试在 OnGlobalLayoutListenerOnPreDrawListener 内部获取 X 和 Y 位置(当您在 Activity 的 onCreate 上需要 X 和 Y 时,两者都有效) , 但它们也返回 0。

我在我的 RecyclerView 上使用 GridLayoutManager:

recyclerView.setLayoutManager(new GridLayoutManager(Activity_alfabeto.this, 7, LinearLayoutManager.VERTICAL, false));

感谢任何帮助。

最佳答案

开始工作了。我不得不使用这种方法:

int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//originalPos[0] is my X
//originalPos[1] is my Y

这里的 getX 和 getY 是相对于 View 的父 View ,而不是它们在屏幕上的绝对位置。

    view.getLocationOnScreen(originalPos);

也可以使用。

关于android - 单击时 RecyclerView 项目的 X 和 Y 为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219677/

相关文章:

android - 将项目添加到 recyclerview 的顶部

android - Youtube Android Player会降低设备速度

android - Proguard 对已删除的类发出警告

android - StateFlow 和 LazyColumn 重组

android - 更新 ListAdapter 上的项目后,DiffUtil ItemCallback areContentsTheSame() 始终返回 true

android - 滚动顶部时的 Recycler View 应该加载数据

java - 在 Android 上使用 Google Recaptcha

android - 为什么我的 Android 应用程序在 Google OAuth 2.0 流程中收到请求短期授权代码的未知来源异常?

android - GridLayout 和 LinearLayout 都在一个 RecyclerView 中

android - 如何获取用户选择的值