【问题标题】:View Pager with 3 Items at once一次查看包含 3 个项目的寻呼机
【发布时间】:2017-12-21 12:01:17
【问题描述】:

我正在尝试在 play store 中实现类似的目标

视图中的所有应用一次显示 3 个应用,第 4 个是预览。向左滑动时,应用程序将移动并放置在相应的位置,使视图更酷。!

请帮助我实现这个观点。

public class PageAdapter extends PagerAdapter {

View itemView;
Context context;
LayoutInflater inflater;
ArrayList<String> arrayList = new ArrayList<>();

public PageAdapter(Context context, ArrayList<String> arrayList) {
    this.context = context;
    this.arrayList = arrayList;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    if (inflater == null)
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.item_page, container, false);
    TextView textView = view.findViewById(R.id.text_item);
    Log.i("Position>>>>>>>> ", "" + position);
    textView.setText(arrayList.get(position));
    container.addView(view);
    return view;
}


@Override
public int getCount() {
    return arrayList.size();
}


@Override
public boolean isViewFromObject(View view, Object object) {

    return view == object;
}

@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
    collection.removeView((View) view);
}

View getLayoutView() {
    if (itemView != null)
        return itemView;
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    itemView = inflater.inflate(R.layout.item_page, null);
    return itemView;
}

}

【问题讨论】:

  • 最有可能的是,那些没有使用ViewPager,而是使用RecyclerView,甚至可能是HorizontalScrollView
  • 但是添加 Horizo​​ntalScrollView 将使滚动更平滑,我希望项目在移动时与前一个项目位于同一位置。
  • RecyclerViewHorizontalLayoutManage 和 snaphelper
  • 使用ViewPager 在视图之间切换(例如家庭、游戏、电影)。使用RecyclerViews 显示页面内的项目
  • CommonsWare 是对的——他们用RecyclerView 做到了——使用&lt;sdk_root&gt;/tools/bin/uiautomatorviewer 来查看 UI 树

标签: android android-layout android-viewpager


【解决方案1】:

如果这是您要查找的内容:RecyclerViewSnap

整合步骤:

将此行添加到您的dependencies:

实现'com.github.rubensousa:gravitysnaphelper:1.5'

然后简单地有这个代码:

recyclerView.setLayoutManager(new LinearLayoutManager(this,
                LinearLayoutManager.HORIZONTAL, false));
SnapHelper snapHelperStart = new GravitySnapHelper(Gravity.START);
snapHelperStart.attachToRecyclerView(startRecyclerView);

要了解有关此快照效果的更多信息,请查看此Snap to center 效果

PS:它设计用于 RecyclerView 而不是 ViewPager。

【讨论】:

    【解决方案2】:

    它看起来不像一个视图寻呼机。它是带有水平布局管理器的回收视图。视图分页器未构建并旨在显示此类内容。如果您看到顶部显示类别的选项卡栏,即包含(带有视图分页器的选项卡布局管理器)的实现或 tablayout 展示视图分页器下方的 crouser 以及分页器转换。因此,如果你想实现它,你可以很容易地使用回收视图而不是使用视图分页器来实现它。

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多