Android 布局建议(RecyclerView、ViewPager 和 CardView)
Android layout advice (RecyclerView, ViewPager and CardView)
我需要一些建议来实现我的 android 应用程序的设计。
我正在使用 RecyclerView
来显示 CardView
的列表。没问题。但是,我需要一个带有 ViewPager
的顶部部分显示其他 CardView
水平滑动:
见http://i.stack.imgur.com/akg2i.png
我读到 Viewpager
不太适合放在 RecyclerView
中,所以也许更好的方法是创建 ScrollView
和 ViewPager
然后在下面的 RecyclerView
内并禁用 RecyclerView
?
的滚动
此外,我可以将 ViewPager
视图与 CardView
一起使用吗?
编辑:
好的,问题已解决:我尝试使用 fmt.Println.MKO 评论
中的这个解决方案
you can do this, define 2 Items types, one for your usual cards, and one for your 2.RecyclerView, with int getItemViewType(int position), you return the specific type. and in onCreateViewHolder(ViewGroup parent, int viewType) you create a viewholder depending on type, either just your card or the 2. RecyclerView
在我的 PostCardAdapter
中被 RecyclerView
:
@Override
public int getItemViewType(int position) {
RecyclerItem p = items.get(position);
if (p.isHeader){
return TYPE_HEADER;
}
return TYPE_POST;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
switch (type) {
case TYPE_HEADER:
RecyclerView rv = (RecyclerView) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.home_header, viewGroup, false);
rv.setHasFixedSize(true);
PostsCardAdapter adapter2 = new PostsCardAdapter(this.headerPosts);
rv.setAdapter(adapter2);
LinearLayoutManager layoutManager = new LinearLayoutManager(viewGroup.getContext(), LinearLayoutManager.HORIZONTAL, false);
rv.setLayoutManager(layoutManager);
return new HeaderViewHolder(rv);
default:
View postView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.post, viewGroup, false);
return new PostsViewHolder(postView);
}
}
TYPE_HEADER
的 onBindViewHolder
中没有具体要做的事情
只需要应用 scrollTo 方法来像 viewPager 一样工作,并找到一个解决方案来显示带有圆圈的组件,指示显示的是哪个项目。
据我了解,您在下方有一个水平滚动视图和一个垂直滚动视图。
要做到这一点,您必须在 activity / 片段 layout.xml
中添加两个 RecyclerView
在您的第一个 RecyclerView 上添加一个水平方向的 LinearLayoutManager 。
您不需要 viewpager。
我需要一些建议来实现我的 android 应用程序的设计。
我正在使用 RecyclerView
来显示 CardView
的列表。没问题。但是,我需要一个带有 ViewPager
的顶部部分显示其他 CardView
水平滑动:
见http://i.stack.imgur.com/akg2i.png
我读到 Viewpager
不太适合放在 RecyclerView
中,所以也许更好的方法是创建 ScrollView
和 ViewPager
然后在下面的 RecyclerView
内并禁用 RecyclerView
?
此外,我可以将 ViewPager
视图与 CardView
一起使用吗?
编辑:
好的,问题已解决:我尝试使用 fmt.Println.MKO 评论
中的这个解决方案you can do this, define 2 Items types, one for your usual cards, and one for your 2.RecyclerView, with int getItemViewType(int position), you return the specific type. and in onCreateViewHolder(ViewGroup parent, int viewType) you create a viewholder depending on type, either just your card or the 2. RecyclerView
在我的 PostCardAdapter
中被 RecyclerView
:
@Override
public int getItemViewType(int position) {
RecyclerItem p = items.get(position);
if (p.isHeader){
return TYPE_HEADER;
}
return TYPE_POST;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
switch (type) {
case TYPE_HEADER:
RecyclerView rv = (RecyclerView) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.home_header, viewGroup, false);
rv.setHasFixedSize(true);
PostsCardAdapter adapter2 = new PostsCardAdapter(this.headerPosts);
rv.setAdapter(adapter2);
LinearLayoutManager layoutManager = new LinearLayoutManager(viewGroup.getContext(), LinearLayoutManager.HORIZONTAL, false);
rv.setLayoutManager(layoutManager);
return new HeaderViewHolder(rv);
default:
View postView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.post, viewGroup, false);
return new PostsViewHolder(postView);
}
}
TYPE_HEADER
onBindViewHolder
中没有具体要做的事情
只需要应用 scrollTo 方法来像 viewPager 一样工作,并找到一个解决方案来显示带有圆圈的组件,指示显示的是哪个项目。
据我了解,您在下方有一个水平滚动视图和一个垂直滚动视图。
要做到这一点,您必须在 activity / 片段 layout.xml
中添加两个 RecyclerView在您的第一个 RecyclerView 上添加一个水平方向的 LinearLayoutManager 。
您不需要 viewpager。