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 будет вашим корневым макетом. Просто мои мысли!