Вы действительно должны использовать GridView для создания сеток, а не TableRows. Вы видели учебник по Android для GridView? Чтобы достичь желаемого с помощью изображения, наложенного на текст, вам необходимо использовать FrameLayout, как показано в примере Android FrameLayout. The Здесь есть одна сложность: вам нужно применить этот макет к каждому элементу, который будет в Gridview.
Например, допустим, вы создали файл макета с именем image_text_view.xml, который выглядит следующим образом:
<FrameLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:id="@+id/gridImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="false">
</ImageView>
<CheckedTextView
android:id="@+id/imageTick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="#000000"
android:layout_gravity="center_horizontal|bottom"
android:checkMark="@drawable/icon"
android:checked="false"
android:visibility="invisible"
>
</CheckedTextView>
</FrameLayout>
Вам необходимо применить этот макет в каждом элементе GridView. Для этого (редактирование примера Android GridView) вам нужно переопределить getView в ImageAdapter следующим образом:
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if(convertView==null){
v = LayoutInflater.from(mContext).inflate(R.layout.image_text_view,null);
v.setLayoutParams(new GridView.LayoutParams(100,100));
ImageView imageView = (ImageView)v.findViewById(R.id.image);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
imageView.setImageResource(mThumbsIds[position]);
CheckedTextView checkedTextView = (TextView) v.findViewById(R.id.imageTick);
checkedTextView.setEnabled(true);
checkedTextView.setVisibility(View.VISIBLE);
}
else
{
v = convertView;
}
return v;
Используя это, например, вы будете иметь все, что вы установили (будь то текст или значки), наложение изображений для каждого элемента в сетке. Возможно, вам придется внести незначительные изменения в этот пример, чтобы удовлетворить ваши точные потребности, но я бы выбрал эту стратегию.