Табличное представление с просмотром изображений внутри

#android #android-layout

#Android #android-макет

Вопрос:

Я новичок в Android и еще не учусь. Я пытаюсь сделать макет моей активности чем-то вроде приведенного ниже изображения. введите описание изображения здесь

Я думал использовать TableLayout для того же, что и ниже

 <?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@ id/table_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow
        android:id="@ id/row_1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="4dp"
        android:background="#ed8404">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:gravity="center"
            android:scaleType="fitCenter"
            android:src="@drawable/image1" />
    </TableRow>


    <TableRow
        android:id="@ id/row_2"
        android:weightSum="2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="2dp">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:src="@drawable/image1"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:scaleType="fitCenter"
            android:adjustViewBounds="true"
            android:src="@drawable/image1" />

    </TableRow>


    <TableRow
        android:id="@ id/row_3"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:layout_marginTop="4dp"
        android:background="#ed8404">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:adjustViewBounds="true"
            android:src="@drawable/image1"/>
    </TableRow>

    <TableRow
        android:layout_weight="1"
        android:id="@ id/row_4"
        android:weightSum="2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="2dp">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:src="@drawable/image1"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:scaleType="fitCenter"
            android:adjustViewBounds="true"
            android:src="@drawable/image1" />

    </TableRow>
</TableLayout>
  

Но я не могу исправить правильную высоту на всех изображениях. Это выглядит примерно так, как это изображение.

введите описание изображения здесь

Дайте мне знать, если кто-нибудь может помочь мне решить проблему. Я хочу, чтобы все изображения подходили для просмотра и имели одинаковую высоту. Большое спасибо.

Ответ №1:

Когда у вас больше элементов, чем может поместиться на экране, вам приходится использовать RecyclerView (с разными ViewHolder именами).

Если у вас есть фиксированное количество элементов, которые вы можете использовать LinearLayout для снижения уровня вложенности:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@ id/table_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:background="#F0F"
        android:gravity="center"
        android:scaleType="fitCenter" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#0FF"
            android:gravity="center"
            android:scaleType="fitCenter" />

        <ImageView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#FF0"
            android:gravity="center"
            android:scaleType="fitCenter" />

    </LinearLayout>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:background="#00F"
        android:gravity="center"
        android:scaleType="fitCenter" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#0F0"
            android:gravity="center"
            android:scaleType="fitCenter" />

        <ImageView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#F00"
            android:gravity="center"
            android:scaleType="fitCenter" />

    </LinearLayout>

</LinearLayout>
  

Для которого вы можете ожидать вывода:
макет