ListView显示ImageView OnClick在ListView外部的自定义位置



我有一个包含自定义项的列表视图,有些项具有OnClickListener。我想做的是,当我点击自定义项目显示和该项目下方的ImageView时,但该图像比列表视图的单元格大,所以我需要它放在它的外部,确定X和Y,然后将其显示在该单元格的项目下方。我尝试了很多东西,但我没有把图像放在正确的位置。有什么想法可以实现吗?

这是我的最后一个代码,也是它的方法,但我仍然不能在所有情况下都很好地工作。

请注意,此"工具提示"图像位于包含列表视图的布局中。

    tooltipImage.setX(mListView.getX()); 
    tooltipImage.setY(mListView.getY() - getTotalHeightofListView() / mListView.getChildCount());
    tooltipImage.setVisibility(View.VISIBLE);

这是包含listview和ImageView:的布局

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

    <ListView
        android:id="@+id/custom_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@null"
        android:scrollbars="none" />

   <ImageView
       android:id="@+id/tootltip"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentEnd="true"
       android:layout_alignParentRight="true"
       android:scaleType="centerInside"
       android:src="@drawable/tootltip"
       android:visibility="gone" />
</RelativeLayout>

您称之为"工具提示",所以听起来像是希望它"浮动"在项目顶部。但是当用户滚动时会发生什么呢?

这里有一个建议:您可以使用ExpandableListView来实现这样的功能。您的列表项将是第一级。当你点击列表项时,它会展开,在它下面显示你的ImageView。这样,当用户滚动时,ImageView就会随之移动。

我做过这样的事情,我甚至隐藏了扩展/折叠指示符,这样ListView就不会看起来是可扩展的ListView。

最后,我将"工具提示"图像放在我的基本活动中,并将其定位在屏幕上,我从单击的图像中获得X和Y,并将工具提示定位在那里:

int[] listViewCoords = new int[2];
listView.getChildAt(pos).findViewById(R.id.image).getLocationOnScreen(listViewCoords);
getBaseActivity(listViewCoords[0] + imageWidht, [1] + imageHeight);

在我的基础上活动:

toolTip.setVisibility(View.VISIBLE);
toolTip.setX(x);
toolTip.setY(y);

最新更新