android - 带间距的 GridView pointToPosition

标签 android layout gridview

我的应用程序使用 gridview 来显示一些项目,我想在该 gridview 中进行一些拖放操作。基本上用户可以选择一个项目并将其移动到不同的位置。这并不难实现,但我偶然发现了一个小问题。当点位于两个网格单元格之间 时,pointToPosition 返回INVALID_POSITION。这是可以理解的,但并没有真正的帮助——在我的例子中,我向用户展示了他四处拖动东西时的顺序预览,当他在间距上拖动时,我突然不知道我应该显示什么.

一种解决方案是实际删除间距。但我仍然希望瓷砖之间有一些视觉间距。

我有可能遗漏了一些计算最接近给定位置的图 block 的方法。

让 gridview 在元素之间具有“仅视觉”间距的最佳方式是什么?

我当前的(临时的?最终的?)解决方案是根本不使用背景并将它们直接绘制到 gridview 背景中。但这似乎不是个好主意。

最佳答案

这就是我最后要使用的:spacing = 0 和包含带圆角的 shapedrawable 的图层列表可绘制对象。另一个这样的可绘制对象用作 GridView 的选择器:

padded_border_normal.xml:

<item android:left="3dp"
      android:right="3dp"
      android:top="3dp"
      android:bottom="3dp">

    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent" />
        <stroke android:color="#8033b5e5" android:width="@dimen/border_width"/>
        <corners android:radius="7dp"/>
        <size android:height="60dp" android:width="60dp" />
    </shape>
</item>

padded_border_pressed.xml:

<item android:left="3dp"
      android:right="3dp"
      android:top="3dp"
      android:bottom="3dp">

    <shape android:shape="rectangle">
        <solid android:color="#6033b5e5" />
        <stroke android:color="#8033b5e5" android:width="@dimen/border_width"/>
        <corners android:radius="7dp"/>
        <size android:height="60dp" android:width="60dp" />
    </shape>
</item>

grid.setSelector(R.drawable.padded_border_pressed); 创建网格时 result.setBackgroundResource(R.drawable.padded_border_normal); 创建网格 ListView 时

关于android - 带间距的 GridView pointToPosition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14078416/

相关文章:

c# - 如何将数据库中的单行显示为多行到gridview?

Android RadioGroup布局

java - GridBagLayout 如何工作?

c# - 如何清除gridview

Android ImageView 选择器不起作用

algorithm - 容器中的最佳图像对齐,使它们的尺寸最大(调整大小)

Android:动态添加单元格到GridView?

Android VideoView 修复高度问题

Android Studio 2.3 gradle 错误

android - 如何从 Java (Android) 以函数指针作为参数调用 C++ 方法