【问题标题】:Attach TextView to RecyclerView将 TextView 附加到 RecyclerView
【发布时间】:2015-12-23 04:19:58
【问题描述】:

我意识到以下内容不正确,但我想您可以将其视为伪代码。我想知道,我怎样才能将整个布局“附加”到我的 RecyclerView 上,这样当我向下滚动时,布局滚动就会随之消失。目前 RecyclerView 上方的 TextView 固定在屏幕上,而我的 RecyclerView 中的所有数据都是可滚动的。我希望 TextView 在用户向下滚动页面时移出视线。如果您查看 Instagram,当您向下滚动页面时,画廊顶部的所有用户个人资料信息都会消失。我怎样才能做到这一点?如何以编程方式添加 TextView?

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Hello!" />

<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="?android:attr/actionBarSize"
    android:padding="@dimen/item_margin"
    android:id="@+id/recycler_view"
    android:clipToPadding="false">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Hello!" />

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

【问题讨论】:

标签: java android xml android-recyclerview recyclerview-layout


【解决方案1】:

你可以试试 Android-ObservableScrollView。

参考以下链接: https://github.com/ksoichiro/Android-ObservableScrollView

【讨论】:

    【解决方案2】:

    我用这两个伟大的资源做了同样的事情:

    https://plus.google.com/114432517923423045208/posts/EdkQFx1RqhE

    https://gist.github.com/gabrielemariotti/4c189fb1124df4556058

                         

    【讨论】:

    • 您能否在答案中添加对这些链接的解释?如果将来它们中的任何一个出现故障,那么没有人能够从这个答案中受益。
    【解决方案3】:

    您可以使用自定义RecyclerAdapterTextView 添加为RecyclerView 的项目之一,或者您可以使用ScrollViewLinearLayout 作为其内容,而不是使用RecyclerView不建议在ScrollView 中使用。

    【讨论】:

    • 我明白了......我真的不想从 RecyclerView 改变,因为我已经深深地扎根于它,而且它似乎更适合我的目的。我想我会考虑以编程方式添加 TextView。
    • @bluemunch 肯定会非常高效。
    【解决方案4】:

    一种可能的解决方案: 您可以将 TextView 视为 RecyclerView 的项目之一,但它会有不同的外观。

     @Override
    public int getItemViewType(int position) {
        if (position == 0) {
            return HEADER;
        } else {
            return NORMAL_ITEM;
        }
    }
    
    @Override
    public StandardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == HEADER) {
            //inflate your textview layout header. Create a viewholder                  //for it
        } else {
            // inflate normal layour
        }
    }
    
    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        if (getItemViewType(position) == HEADER) {
            // BIND header View
        } else {
            //BIND NormalView
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 2015-06-20
      • 2015-08-12
      相关资源
      最近更新 更多