Я хочу, чтобы мои RecyclerView
элементы заполняли весь экран. Моя архитектура приложения следующая: у меня есть один activity
хостинг с несколькими fragments
, который будет подключен к / из NavHostFragment
через NavController
. Для простоты я опубликую соответствующие части моих макетов.
Вот часть NavHostFragment
моего основного activity
:
<fragment
android:id="@+id/myNavHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="@id/bottom_nav_view"
app:layout_constraintTop_toBottomOf="@+id/stream"
app:layout_constraintVertical_weight="1"
app:navGraph="@navigation/navigation" />
Вот схема расположения fragment
содержит RecyclerView
для отображения списка элементов:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.jon.mikel.home.ui.DataFragmentViewModel" />
</data>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/data_list_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation ="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:dataListData="@{viewModel.dataList}"
/>
</layout>
Наконец, вот элемент для списка RecyclerView
:
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="data"
type="com.jon.mikel.home.data.Data"/>
<variable
name="viewModel"
type="com.jon.mikel.home.ui.DataFragmentViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/dataName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="TextView"
app:dataName="@{datadataName}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Моя проблема в том, что элементы не отображаются, как ожидалось. Каждый элемент должен заполнить весь экран. Но они заказаны в порядке wrap content
, хотя я указал их как match parent
для ширины и высоты.
Текущий вывод выглядит следующим образом (эскиз):
Как я хочу (эскиз):
Под "страницей" я, конечно, имею в виду элемент Recyclerview
, но я надеюсь, что вы поняли идею. Я также надеюсь, что кто-то может помочь.