0

我正在开发一个最大日期范围为从今天起 90 天的日历。

我有一个活动和片段,代表可从中选择日期的月份。我正在使用片段,因为我正在使用 viewpager 进行滑动(我确定这是一个词)

到目前为止,它在 2.2、2.3、4.0 和 4.2 上运行良好,但是在 4.1 中,我的代码并没有达到预期的效果。

我在每个片段中都有一个网格视图来表示一个月中的日期。我在每个 gridview 上设置了一个 onItemClickListener。在侦听器中,我获得了 adapterView 的句柄以检索正确的适配器,从而计算正确的日期。在我测试过的每个操作系统版本上都可以正常工作,除了 4.1。4.1 给了我错误的适配器。

作为 hack,我测试了 4.1,然后调用父活动以获取 viewpager 的当前位置并获取片段的句柄,它是正确的适配器。

然而,在这种方法中,我的 selector.xml 文件被破坏了,即单击时只有“某些”日期会导致我的选择器触发。即占据第 1 列和第 7 列的周末。

如果其他人有过这种行为的经历,那么在正确方向上的一点将是最受欢迎的。即如何修复返回的不正确的适配器,或者如何修复我的 selector.xml 的不触发

我还不想过多地使用代码,因为我上面的描述相当冗长。但如果有人想看到它,我会发布代码

4

1 回答 1

1

所以我设法弄清楚了这一点,这不是我上面的假设。适配器视图没有问题,问题在于视图分页器和片段的 z 索引,触摸事件被错误的片段注册。

修复方法是将 gloabalLayoutListener 添加到 viewpager,然后获取第一个视图,然后调用 view.bringChildToFront();

问题已解决,我希望这对某人有所帮助。

于 2013-10-18T03:22:42.707 回答