以下のことを行うことで、同じレイアウトを実現しました。
xml の SyncedScrollView は、2 つのスクロールビューを同期するために使用されるカスタム スクロールビューです。
以下の 2 つのスタックオーバーフローの回答を参照する必要があります。
- SynchedScrollView と答え
- 最適化された SynchedScrollView my answer
以下のxmlを確認してください
<RelativeLayout
android:id="@+id/activity_main_linear_before_all_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/activity_main_empty_box"
android:layout_width="50dp"
android:layout_height="30dp"
android:text="xx"
android:gravity="center" />
<com.example.SyncedScrollView
android:id="@+id/activity_main_observable_scrollview_1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@+id/activity_main_empty_box"
android:fadeScrollbars="false"
android:overScrollMode="never"
android:scrollbars="none">
<LinearLayout
android:id="@+id/activity_main_linear_left_headers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="row 1" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="row 2" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="row 3" />
</LinearLayout>
</com.example.SyncedScrollView>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toEndOf="@+id/activity_main_empty_box"
android:layout_toRightOf="@+id/activity_main_empty_box"
android:fadeScrollbars="false"
android:overScrollMode="never">
<RelativeLayout
android:id="@+id/activity_main_body_relative"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/activity_main_top_headers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="column 1" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="column 2" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="column 3" />
</LinearLayout>
<com.example.SyncedScrollView
android:id="@+id/activity_main_observable_scrollview_2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/activity_main_top_headers"
android:fadeScrollbars="false"
android:overScrollMode="never"
android:scrollbars="vertical">
<LinearLayout
android:id="@+id/activity_main_body"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/activity_main_body_row_1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="1,1" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="1,2" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="1,3" />
</LinearLayout>
<LinearLayout
android:id="@+id/activity_main_body_row_2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="2,1" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="2,2" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="2,3" />
</LinearLayout>
<LinearLayout
android:id="@+id/activity_main_body_row_3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="3,1" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="3,2" />
<TextView
android:layout_width="50dp"
android:layout_height="30dp"
android:gravity="center"
android:padding="5dp"
android:text="3,3" />
</LinearLayout>
</LinearLayout>
</com.example.SyncedScrollView>
</RelativeLayout>
</HorizontalScrollView>
</RelativeLayout>
ここでは、各セルは TextView です。ボックスを描画するように背景のドローアブルを設定できます(テーブルのように見えます)
また、左ヘッダー、上部ヘッダー、本文の TextView を動的に追加して、テーブルを動的に作成することもできます。
これはレイアウトのスクリーンショットです

私の純粋な英語でごめんなさい。