我能描述的最好方法如下。我有一个海报画廊,有一堆图像。当用户在图库中来回移动时,所选海报会突出显示。我在海报库中设置了以下代码:
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 and onItemLongClick Google TV
但是当我处理事件时,我已经让onItemLongClick返回true。
答案 0 :(得分:1)
Vizio遥控器有一个怪癖。 “确定”按钮未映射到右键代码。当按下OK时Vizio遥控器发送KEYCODE_ENTER,实际上它应该发送KEYCODE_DPAD_CENTER。这就是我认为导致你的问题的原因。如果您尝试使用AbleRemote作为输入设备,您应该能够看到它按预期工作。现在要解决您的问题,如果存在键盘,您可能必须转到键码侦听器并检测posterGallery上的关键事件以触发短按和长按。