RecyclerView高度wrap_content计算不正确

时间:2016-11-13 14:27:39

标签: android android-recyclerview android-scrollview android-wrap-content

我想要RecyclerViewwrap_content。我不希望在RecyclerView中滚动任何内容,它应该调整到内部孩子的高度。我不想让我的父ScrollView滚动我的活动内容。

<FrameLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <!-- scrolls a little bit as RecyclerView goes slightly down beyond the screen -->
  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical">
      <!-- still scrolls inside -->
      <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

填充RecyclerView:

myAdapter = new MyAdapter();
layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(myAdapter);

我使用RecyclerView库来修复wrap_content个问题:

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

enter image description here

基本上,RecyclerView高度计算对我来说效果不佳。 RecyclerView仍然有它自己的滚动和ScrollView滚动一点。如果我尝试将一些rediculous RecyclerView高度设置为1000dp,使其大于项目的高度,则滚动按需要工作,例如RecyclerView不会滚动,ScrollView会使用所有RecyclerView项目滚动活动。

那我做错了什么? :)

2 个答案:

答案 0 :(得分:4)

我只需要使用android.support.v4.widget.NestedScrollView而不是ScrollView。

答案 1 :(得分:0)

在这种情况下,如果您使用23.0.1使其成为23.1.1或更高版本,则需要升级recyclerview gradle版本。在最新的gradle更新中,google已向recyclerview提供了wrap_content属性。