RecyclerView wrap_content不工作.TextView没有显示

时间:2016-07-14 17:14:09

标签: android android-recyclerview

我遇到了一个我无法解决的问题。我有一个CardView包含RecyclerView的片段。这个RecyclerViewlayout_height="wrap_content",但我可以看到这不起作用。我在这里读了一些solutions,说在支持库的23.2版本中这是固定的,但它在我的情况下并不起作用。另外,我想在TextView下方CardView,但它没有显示它。如果我给CardView一个固定的高度,它的工作正常。

我希望有人可以帮忙解决这个问题。

修改 让我们看看这张图片是否更好地解释了我的意思。

enter image description here

这里,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 个答案:

答案 0 :(得分:2)

好的,最后我做到了。我不想回答我自己的问题,但也许可以帮助别人。

我指责RecyclerView,但有罪的是SwipeRefreshLayout。事实上,我作为一个新手是有罪的。问题是我将SwipeRefreshLayout放在CardView内。对于我所看到的内容,SwipeRefreshLayout尝试获取所有可用空间(我认为这是一种逻辑行为),这就是为什么我的CardView也在做同样的事情。

所以解决方案很简单:在顶部,将SwipeRefreshLayout放在LinearLayout内,将CardView放在RecyclerViewTextView里面}。

希望这可以像我一样帮助其他新手:)

答案 1 :(得分:0)

我有一个<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>

我开始考虑的是将recyclerview和textview放在卡片视图中。这意味着将CardView作为您的根布局。只是我的想法!