私がこれを理解しているのか、それとも間違っているのかわかりません。私はグリッドレイアウト(セルはテキストビュー)を垂直スクロールの内側にある水平スクロールの中にラップしています。私はDpadを使ってグリッドを移動しています。これはうまくいきます。右矢印パッドを押すとグリッドセルが左から右に移動し、左矢印パッドが押されると右から左に移動します。グリッドの各textViewにonKeylistenerを追加しました。グリッドをスクロールして色の背景を変更しています。問題は、明らかにonKeyListenerがグリッドのコントロールを引き継ぐことです。スクロール権は色を変更するために機能しますが、セルはグリッド上を移動しません。最後に目に見えるようになると、列のフォーカスは画面から消えませんが、セルは画面から離れたままになります。 onkeyイベント内でスクロールを実装して、セルが移動し、セルのプロパティを制御できるようにする方法はありますか?あるいは、この仕事をする全く異なる方法がありますか?onKeyListener with onScrollListener
主成分
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);
}
}