Сделать так, чтобы GridView расширялся по вертикали

У меня есть GridViewвертикаль LinearLayout, которую я хочу иметь занять все оставшееся вертикальное пространство. В сетке всегда будет 5 столбцов и 7 строк. Элементы сетки-это просто a TextView. Я хочу, чтобы элементы сетки расширялись пропорционально (так, чтобы каждый элемент составлял одну пятую ширины и одну седьмую высоты), чтобы заполнить оставшееся пространство на любом устройстве. Я попытался установить вес макета, но это ничего не дало.
Как сделать так, чтобы он заполнял пространство?

Вот моя деятельность:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  
  
  android_layout_width="match_parent"
  android_layout_height="match_parent"
  android_fitsSystemWindows="true"
  android_orientation="vertical">

  <TextView
    android_text="@string/zero"
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_id="@+id/tv0"
    android_gravity="end"
    android_textAppearance="@style/TextAppearance.AppCompat.Large"
    android_paddingEnd="8dp"
    android_paddingStart="8dp"
    android_textColor="#e4e4e4"
    android_background="@color/colorPrimaryDark"/>

  <!-- A few more TextViews -->

  <GridView
    android_id="@+id/grid_view"
    android_layout_width="match_parent"
    android_layout_height="0dp"
    android_layout_weight="1"
    android_horizontalSpacing="0dp"
    android_verticalSpacing="0dp"
    android_stretchMode="columnWidth"
    android_gravity="center"
    android_numColumns="5"/>
</LinearLayout>

А вот макет элемента сетки:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
  
  android_layout_width="match_parent"
  android_layout_height="match_parent">

  <TextView
    android_id="@+id/text"
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    android_layout_gravity="center"
    android_background="@color/colorPrimary"
    android_paddingBottom="15dp"
    android_paddingLeft="10dp"
    android_paddingRight="10dp"
    android_paddingTop="15dp"
    android_textAppearance="@style/TextAppearance.AppCompat.Medium"/>
</FrameLayout>

1 ответ

  1. Я не совсем понял, что вы подразумеваете под «пропорционально», но чтобы сделать GridView«заполнение пространства» в вашем примере, вам не нужно устанавливать веса макета:

    <LinearLayout 
        android_layout_width="match_parent"
        android_layout_height="match_parent"
        android_fitsSystemWindows="true"
        android_orientation="vertical">
    
        <TextView
            android_layout_width="match_parent"
            android_layout_height="wrap_content"
            android_text="@string/text" />
    
        <TextView
            android_layout_width="match_parent"
            android_layout_height="wrap_content"
            android_text="@string/text" />
    
        <TextView
            android_layout_width="match_parent"
            android_layout_height="wrap_content"
            android_text="@string/text" />
    
        <TextView
            android_layout_width="match_parent"
            android_layout_height="wrap_content"
            android_text="@string/text" />
    
        <GridView
            android_id="@+id/grid_view"
            android_layout_width="match_parent"
            android_layout_height="match_parent"
            android_gravity="center"
            android_horizontalSpacing="0dp"
            android_numColumns="5"
            android_stretchMode="columnWidth"
            android_verticalSpacing="0dp" />
    
    </LinearLayout>
    

    Создает макет ниже:

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