0

我可以描述的最佳方式如下。我有一个海报画廊,里面有一堆图片。当用户在画廊中来回移动时,选定的海报会突出显示。我在海报库上设置了以下代码:

 Gallery posterGallery = (Gallery) context.findViewById(R.id.moviePosterGallery);
 posterGallery.setAdapter(new MoviePosterImageGalleryAdapter(context, key,
                          item.getCategory()));
 posterGallery.setOnItemSelectedListener(
    new MoviePosterOnItemSelectedListener(bgLayout, context));
 posterGallery.setOnItemClickListener(new MoviePosterOnItemClickListener());
 posterGallery.setOnItemLongClickListener(new MoviePosterOnItemLongClickListener());

似乎发生的情况是,如果您按下 vizio costar 上的 Remote,如果您按住 OK 按钮,则会触发 Click 和 Long click 事件。就我而言,当收到长按时会弹出一个对话框,但海报也会启动与该视频相关的视频以开始播放,这是 ItemClickListener 代码的一部分。

在 Nexus 7 平板电脑上测试相同的代码时,只会触发长按,而不是两者。有没有办法正确处理 Google TV 上的长按。如果有帮助,我将在 Google TV 3 中使用 vizio costar。

此外,如果您将鼠标指针移到该项目上,然后按住遥控器前面的 - 键,则只会触发长按事件。它似乎与 OK 以及按住的时间有关。

我查看了以下类似问题:

onListItemClick 和 onItemLongClick Google TV

但我已经让 onItemLongClick 在处理事件时返回 true。

4

1 回答 1

1

Vizio 遥控器有一个怪癖。OK 按钮未映射到正确的键码。Vizio 遥控器在按下 OK 时发送 KEYCODE_ENTER,而实际上它应该发送 KEYCODE_DPAD_CENTER。我认为这就是导致您的问题的原因。如果您尝试使用 AbleRemote 作为输入设备,您应该能够看到它按预期工作。现在要解决您的问题,如果存在键盘,您可能必须转到键码侦听器并检测 posterGallery 上的键事件以触发短按和长按。

于 2013-03-02T15:38:05.143 回答