我通过执行以下操作实现了相同的布局。
你会发现 xml 中的 SyncedScrollView 是自定义的滚动视图,用于同步两个滚动视图。
您需要参考以下两个 stackoverflow 答案。
- SynchedScrollView andig 答案
- 优化SynchedScrollView 我的答案
检查下面的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 以动态创建表格。
这是布局的屏幕截图
对不起我纯英语。