RecyclerView wrap_content не работает.TextView после его не отображается

Я поставил в тупик проблему, которую не могу решить. У меня есть фрагмент с CardView содержащий RecyclerView, это RecyclerView имеет layout_height="wrap_content" но я вижу, что это не работает. Я читал здесь некоторые решения о том, что в версии 23.2 библиотеки поддержки это исправлено, но в моем случае это не работает. Кроме того, я хочу TextView прямо под CardView, но это не показывает это. Это работает нормально, если я дам CardView фиксированная высота.

Я надеюсь, что кто-то может помочь с этим.

РЕДАКТИРОВАТЬ Давайте посмотрим, если это изображение лучше объясняет, что я имею в виду.

Здесь RecyclerView пределы - это синий прямоугольник, хотя они должны быть похожи на красный, это то, что я хочу архивировать.

build.gradle

dependencies{
          compile 'com.android.support:recyclerview-v7:24.+'
}

layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
          >
    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_gravity="top"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:padding="5dp"
        card_view:cardElevation="4dp">
          <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swipeContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.RecyclerView
               android:layout_width="match_parent"
               android:layout_height="wrap_content">
            </android.support.v7.widget.RecyclerView>

          </android.support.v4.widget.SwipeRefreshLayout>

    </android.support.v7.widget.CardView>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:text="test text"
        android:textSize="20sp"/>

2 ответа

Решение

Хорошо, наконец, я заставил это работать. Я не люблю отвечать на свой вопрос, но, возможно, могу помочь другим.

Я обвинял RecyclerViewно виновным был SwipeRefreshLayout, А на самом деле я как новичок был виноват. Проблема заключалась в том, что я ставил SwipeRefreshLayout внутри CardView, За то, что я вижу, SwipeRefreshLayout пытается получить все доступное пространство (я думаю, это логичное поведение), поэтому мой CardView делал то же самое.

Таким образом, решение простое: поверх SwipeRefreshLayoutвнутри него LinearLayout и внутри CardView с RecyclerView и TextView,

Надеюсь, что это может помочь другим новичкам, как я:)

У меня есть <include @layout/some_layout /> файл, который выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
  android:background="@android:color/white"
  app:layout_behavior="@string/appbar_scrolling_view_behavior"
  tools:showIn="@layout/activity_main">

 <!-- Wrap this whole thing in a cardView -->
  <android.support.v7.widget.RecyclerView
     android:id="@+id/recycler"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
  </android.support.v7.widget.RecyclerView>

  <!-- End of cardview layout -->

  <TextView
     android:layout_width="match_parent"
     android:layout_height="300dp"
     android:text="test text"
     android:layout_below="@id/recycler"
     android:textSize="20sp"/>

</RelativeLayout>

Я также начинаю думать о том, чтобы поместить и просмотр макулатуры, и просмотр текста в вид карты. Это означает, что CardView будет вашим корневым макетом. Просто мои мысли!

Другие вопросы по тегам