Android ListView聚焦的问题
在我的应用程序中,我有一个包含GridView和ListView的片段,用于使用游标适配器显示项目。仅启用这两个视图中的一个,用户可以选择查看项目的方式 所以,在片段的onCreateView方法中 showList和showGrid的代码为: 当应用程序调用showList时,我无法使用d-pad游戏控制器在ListView中导航。按d-pad键无效,仅触摸输入有效。 如果应用程序调用showGrid,则d-pad工作正常。Android ListView聚焦的问题,android,listview,view,focus,Android,Listview,View,Focus,在我的应用程序中,我有一个包含GridView和ListView的片段,用于使用游标适配器显示项目。仅启用这两个视图中的一个,用户可以选择查看项目的方式 所以,在片段的onCreateView方法中 showList和showGrid的代码为: 当应用程序调用showList时,我无法使用d-pad游戏控制器在ListView中导航。按d-pad键无效,仅触摸输入有效。 如果应用程序调用showGrid,则d-pad工作正常。 如果我在运行时从网格切换到列表,dpad也会在ListView上正常
如果我在运行时从网格切换到列表,dpad也会在ListView上正常工作,切换使用前面提到的相同方法。什么会导致这个问题?我尝试使用lv.setFocusabletrue和lv.requestFocus,但没有结果。我意识到调用showGrid和showList为时过早,所以我稍微更改了onCreateView:
if (UserPreferences.isViewStyleGrid(mFragment.getActivity())) {
gv.post(new Runnable() {
@Override
public void run() {
showGrid();
}
});
} else {
lv.post(new Runnable() {
@Override
public void run() {
showList();
}
});
}
这样,两个函数都会在视图完全初始化后调用
private void showList() {
gv.setVisibility(View.GONE);
lv.setVisibility(View.VISIBLE);
UserPreferences.getPreferences(getActivity()).edit()
.putString(Constants.VIEWSTYLE, "list").commit();
}
private void showGrid() {
lv.setVisibility(View.GONE);
gv.setVisibility(View.VISIBLE);
UserPreferences.getPreferences(getActivity()).edit()
.putString(Constants.VIEWSTYLE, "grid").commit();
}
if (UserPreferences.isViewStyleGrid(mFragment.getActivity())) {
gv.post(new Runnable() {
@Override
public void run() {
showGrid();
}
});
} else {
lv.post(new Runnable() {
@Override
public void run() {
showList();
}
});
}