Assuming you have fixed width and height, the 3x3 cell can be created with ConstraintLayout
with each cell having same width and height. Here's the code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview_1"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@id/textview_4"
app:layout_constraintEnd_toStartOf="@id/textview_2"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread"
tools:text="TextView 1" />
<TextView
android:id="@+id/textview_2"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/textview_1"
app:layout_constraintEnd_toStartOf="@id/textview_3"
app:layout_constraintStart_toEndOf="@id/textview_1"
app:layout_constraintTop_toTopOf="@id/textview_1"
tools:text="TextView 2" />
<TextView
android:id="@+id/textview_3"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/textview_1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/textview_2"
app:layout_constraintTop_toTopOf="@id/textview_1"
tools:text="TextView 3" />
<TextView
android:id="@+id/textview_4"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@id/textview_7"
app:layout_constraintEnd_toEndOf="@id/textview_1"
app:layout_constraintStart_toStartOf="@id/textview_1"
app:layout_constraintTop_toBottomOf="@id/textview_1"
tools:text="TextView 4" />
<TextView
android:id="@+id/textview_5"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/textview_4"
app:layout_constraintEnd_toEndOf="@id/textview_2"
app:layout_constraintStart_toStartOf="@id/textview_2"
app:layout_constraintTop_toTopOf="@id/textview_4"
tools:text="TextView 5" />
<TextView
android:id="@+id/textview_6"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/textview_4"
app:layout_constraintEnd_toEndOf="@id/textview_3"
app:layout_constraintStart_toStartOf="@id/textview_3"
app:layout_constraintTop_toTopOf="@id/textview_4"
tools:text="TextView 6" />
<TextView
android:id="@+id/textview_7"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/textview_1"
app:layout_constraintStart_toStartOf="@id/textview_1"
app:layout_constraintTop_toBottomOf="@id/textview_4"
tools:text="TextView 7" />
<TextView
android:id="@+id/textview_8"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/textview_7"
app:layout_constraintEnd_toEndOf="@id/textview_2"
app:layout_constraintStart_toStartOf="@id/textview_2"
app:layout_constraintTop_toTopOf="@id/textview_7"
tools:text="TextView 8" />
<TextView
android:id="@+id/textview_9"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/textview_7"
app:layout_constraintEnd_toEndOf="@id/textview_3"
app:layout_constraintStart_toStartOf="@id/textview_3"
app:layout_constraintTop_toTopOf="@id/textview_7"
tools:text="TextView 9" />
</android.support.constraint.ConstraintLayout>
Here a vertical chain has been created on the first column and a horizontal chain has been created on the first row. This way you can control the width of all the cells from the first row and control the height of all the cells from the first column. This also saves you from creating multiple chains in a layout and all of the chains in this layout which are actually 2 reside only on the first TextView
only, so it is more manageable.
I hope this helps and let me know if you have any questions regarding this.