对不起,如果之前已经回答了这个问题。老实说,我已经搜索了很多这个问题,尽管有类似的情况,但没有一个帮助过我。
我正在为电视开发Android应用程序。我创建了一个GridView,因为我想显示一些图片和视频的缩略图。 gridview中的每个项目都有一张图片和下面的文字信息。
问题在于我无法使dpad正常工作。如果我设置android:focusable =" true"在项目中,我可以浏览GridView,但是在按下输入或使用鼠标后没有显示图像/视频(没有调用" onItemClick()")。如果我没有设置android:focusable =" true",我无法浏览GridView(也许因为我看不到它)而且我也无法按Enter键并查看图像/视频,但我可以用鼠标点击该项目并查看图像/视频。
如何使dpad正常工作?
非常感谢您提前。我一直在努力解决这个问题,我真诚地感谢你的帮助。
答案 0 :(得分:0)
昨天我遇到了同样的问题。您需要做的是将一个onKeyListener添加到GridView,并在onKey函数内部处理按键。我会分享我用它做的事情,以便你可以在它上面构建。
gridView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
Toast.makeText(getActivity(), "CENTER", Toast.LENGTH_SHORT).show();
if(gridView.getSelectedItemPosition() == -1){
if(gridView.getCount() > 0)
gridView.setSelection(0);
else
return false;
}
CURRENT_VIDEO_NUM = gridView.getSelectedItemPosition();
}
else{
switch(keyCode){
case KeyEvent.KEYCODE_DPAD_RIGHT:
Toast.makeText(getActivity(), "RIGHT", Toast.LENGTH_SHORT).show();
if(event.getAction() == 0){
try {
if (gridView.getSelectedItemPosition() < gridViewAdapter.getCount() - 1) {
gridView.setSelection(gridView.getSelectedItemPosition() + 1);
return true;
}
} catch (Exception e) {
gridView.setSelection(gridViewAdapter.getCount() - 1);
return true;
}
}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
Toast.makeText(getActivity(), "LEFT", Toast.LENGTH_SHORT).show();
if(event.getAction() == 0){
try {
if (gridView.getSelectedItemPosition() > 0) {
gridView.setSelection(gridView.getSelectedItemPosition() - 1);
return true;
}
} catch (Exception e) {
gridView.setSelection(0);
return true;
}
}
break;
case KeyEvent.KEYCODE_DPAD_UP:
Toast.makeText(getActivity(), "UP", Toast.LENGTH_SHORT).show();
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
Toast.makeText(getActivity(), "DOWN", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(getActivity(), "ELSE" + keyCode, Toast.LENGTH_SHORT).show();
break;
}
}
return false;
}
});
现在让我解释一下这里发生的事情。 1)我检查是否按下了中央按钮,如果是这样的话,我将执行单击项目时要执行的操作。 2)如果按下RIGHT按钮,则选择向右移动,左边的选择相同。 3)UP和DOWN稍微不那么简单。由于我刚刚制作了一个演示版,我没有花时间在它上面。不过不会有问题,只需增加/减少网格视图的总列数,同时记住项目的最大/最小值。
尝试构建它,如果您遇到任何问题,请告诉我。