わかった。私が達成しようとしているのは、Excel の固定ペインと同じ効果をもたらすレイアウトです。つまり、メインの ListView で水平方向にスクロールするヘッダー行と、メインの ListView で垂直方向にスクロールする左側の ListView が必要です。他の次元でスクロールするとき、ヘッダー行と左側のリストビューは静止したままにする必要があります。
xml レイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recordViewLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout android:layout_width="160dp"
android:layout_height="match_parent"
android:orientation="vertical">
<CheckBox
android:id="@+id/checkBoxTop"
android:text="Check All"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView android:id="@+id/engNameList"
android:layout_width="160dp"
android:layout_height="wrap_content"/>
</LinearLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout android:id="@+id/scroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<include layout="@layout/record_view_line" android:id="@+id/titleLine" />
<ListView
android:id="@android:id/list"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
次に、このコードを ListActivity で使用しています
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
View v = recordsListView.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
((ListView)findViewById(R.id.engNameList)).setSelectionFromTop(firstVisibleItem, top);
}
これにより、ユーザーが右側の ListView をスクロールすると、左側の ListView がスクロールされます。残念ながらそうではありません。
私は少しグーグルについて調べましたが、 setSelectionFromTop() 関数は、複数のレイアウト内にネストされている ListView では機能しないようです。
この場合、それらを一緒にスクロールさせる方法、レイアウトを設定する別の方法、または別の手法を一緒に提案することができます。