我真的不确定我是理解了这一点,还是做错了。我有一个网格布局(单元格是文本视图)包裹在一个水平滚动,这是在一个垂直滚动。我正在使用Dpad在网格中导航。这很有效,当我按下右箭头垫时,网格单元格会像预期的那样从左向右移动,当按下左箭头垫时,网格单元格从右向左移动。我已经添加了一个onKeylistener附加到网格的每个textView,当我在网格上滚动时,我正在改变背景的颜色。问题是onKeyListener显然接管了对网格的控制。向右滚动可用于更改颜色,但单元格不再在网格上移动。一旦我到达最后一个可见列,焦点将继续离开屏幕,但单元格将离开屏幕。有没有办法在onkey事件中实现滚动,这样单元格就会移动,我就可以控制单元格的属性了?或者有一种完全不同的方式来实现这一点?
主要组件包括
textViewD.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if(keyEvent.getAction()==KeyEvent.ACTION_DOWN && i == KeyEvent.KEYCODE_DPAD_RIGHT) {
gridLayoutE.getChildAt(childIndex[0]).setBackgroundColor(Color.BLACK);
gridLayoutE.getChildAt(childIndex[0] + 1).setBackgroundColor(Color.GREEN);
childIndex[0] = childIndex[0] + 1;
gridLayoutE.requestFocus();
return true;
}
return false;
}scrolllistener,我有一个扩展horizontalscroll的类,目的是让我的头表和网格一起滚动。这是可行的。
@Override
public void onScrollChanged (ObservableScrollView scrollView,int x, int y, int oldx, int oldy){
if (scrollView == hsvHeader) {
hsvBody.scrollTo(x, y);
} else if (scrollView == hsvBody) {
hsvHeader.scrollTo(x, y);
}
}https://stackoverflow.com/questions/47564544
复制相似问题