无限滚动水平滚动视图,有限的可见项目

时间:2017-06-06 16:46:48

标签: android android-layout

我想要一个简单的无限滚动水平滚动视图,其中有限的可见项目如下图所示: http://i.stack.imgur.com/uDqkn.jpg

与此图像类似,一次可见4个视图,第一个项目左侧显示最后一个项目,就像任何轮播一样。

目前我正在使用simpel Horizo​​ntalScrollView:

<HorizontalScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:overScrollMode="never"
    android:requiresFadingEdge="none"
    android:scrollbars="none">

    <LinearLayout
        android:id="@+id/itv_tabs_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

<!--Some Views-->

       </LinearLayout>
</LinearLayout>

但是我需要它是圆形的......就像我可以向两个方向移动它而没有任何限制

任何建议或链接都​​会有所帮助。

由于

1 个答案:

答案 0 :(得分:1)

按照Creating Lists and Cards进行以下更改:

  1. 在xml中的RecyclerView元素中添加值android:orientation的{​​{1}}属性

    horizontal
  2. 设置<!-- A RecyclerView with some commonly used attributes --> <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" /> // <-- this is changed 后滚动到中间位置:

    RecyclerView
  3. 如果值超出限制,请更新 // specify an adapter (see also next example) mAdapter = new MyAdapter(myDataset); mRecyclerView.setAdapter(mAdapter); mRecyclerView.scrollToPosition(Integer.MAX_VALUE / 2); 以返回正确的onBindViewHolder()

    ViewHolder
  4. 最后,从// Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder holder, int position) { // - get element from your dataset at this position // - replace the contents of the view with that element holder.mTextView.setText(mDataset[position % mDataset.length]); // <-- this is changed }

    返回Integer.MAX_VALUE
    getItemCount()
  5. <强>限制: 我假设用户不会滚动视图// Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return Integer.MAX_VALUE; } / 2次,否则他们将到达终点。

    希望这有帮助。