如何在Android TV中使用键盘将GridView滚动到顶部
我正在Android智能电视上开发应用程序,它只能使用遥控器导航焦点位置(就像在普通Android设备中使用d-pad键一样) 我使用如何在Android TV中使用键盘将GridView滚动到顶部,android,gridview,focus,google-tv,Android,Gridview,Focus,Google Tv,我正在Android智能电视上开发应用程序,它只能使用遥控器导航焦点位置(就像在普通Android设备中使用d-pad键一样) 我使用GridView来显示图像。问题是当滚动到底部时,它不能再向上滚动了!我知道这种现象永远不会发生在触摸模式的设备上,但对于安卓电视来说,这是非常普遍的 实际上,我在使用ListView时遇到了同样的问题,我通过手动滚动到最上面一行来解决。覆盖AbsListView.OnScrollListener: @Override public void onScroll(A
GridView
来显示图像。问题是当滚动到底部时,它不能再向上滚动了!我知道这种现象永远不会发生在触摸模式的设备上,但对于安卓电视来说,这是非常普遍的
实际上,我在使用ListView
时遇到了同样的问题,我通过手动滚动到最上面一行来解决。覆盖AbsListView.OnScrollListener:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
try {
if (firstVisibleItem > 0
&& view.getChildAt(0).isSelected()
|| view.getChildAt(0).hasFocus()) {
view.smoothScrollToPosition(firstVisibleItem - 1);
Log.d(TAG, "scroll up");
} else if ((firstVisibleItem + visibleItemCount) < totalItemCount
&& view.getChildAt(visibleItemCount-1).hasFocus()
|| view.getChildAt(visibleItemCount-1).isSelected()) {
view.smoothScrollToPosition(firstVisibleItem + visibleItemCount + 1);
Log.d(TAG, "scroll down");
}
} catch (Exception e) {
//Log.e(TAG, e.getMessage(),e);
}
}
但不起作用。有人能给点建议吗
提前谢谢 我有个主意可能对你有用。如果不滚动网格视图,您只需销毁它,并在想要跳到顶部时重新创建它,这可能会起作用。然而,如果您希望允许用户滚动,则需要另一种方法。我建议偏移栅格视图,使其图元与父视图不完全对齐。例如,如果底部的可见行仅显示一半(中途截断),则向用户指示还有更多项目要向下滚动。当你向上滚动时,同样的情况也会发生——最上面的一行只显示了一半(被剪切的项目的顶部)。这是我在电视应用程序中经常看到的一种模式。iStar您解决了这个问题吗?我不确定我的问题是否与你的类似-
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem > 0 && isFocusOnFirstRow()) {
view.smoothScrollToPosition(firstVisibleItem - 1);
Log.d(TAG, "scroll up");
}
}
private boolean isFocusOnFirstRow() {
try {
for (int i = 0; i < mGridView.getNumColumns(); i++) {
if (mGridView.getChildAt(i).hasFocus()) {
return true;
}
}
} catch (Exception e) {
// ArrayIndexOutofBoundsException
Log.e(TAG, e.getMessage());
}
return false;
}