添加依赖:
implementation 'com.azoft.carousellayoutmanager:carousel:1.2.1'
recyclerView的适配器:
public class MyAdapter extends BaseQuickAdapter<String,BaseViewHolder>{
public MyAdapter(int layoutResId) {
super(layoutResId);
}
@Override
protected void convert(BaseViewHolder helper, String item) {
}
//ItemView适应RecyclerView,根据RecyclerView的宽高设置ItemView的宽高
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item, parent, false);
view.getLayoutParams().width = parent.getWidth()*3/8;
view.getLayoutParams().height = parent.getHeight();
return new BaseViewHolder(view);
}
}
carousellayoutmanager的使用:
关于RecyclerView的宽高调整
https://blog.csdn.net/crazyman2010/article/details/54315109
public class Main2Activity extends AppCompatActivity {
private RecyclerView recyclerView;
private MyAdapter myAdapter;
private List<String> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main2);
recyclerView=findViewById(R.id.recycler);
//垂直显示还是水平显示
final CarouselLayoutManager layoutManager = new
CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL);
myAdapter=new MyAdapter(R.layout.rv_item);
recyclerView.setAdapter(myAdapter);
//layoutManager.setMaxVisibleItems(4);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
//这两个必须设置
layoutManager.setPostLayoutListener(new MyCarouselZoomPostLayoutListener());
recyclerView.addOnScrollListener(new CenterScrollListener());
//点击
DefaultChildSelectionListener.initCenterItemListener(new DefaultChildSelectionListener.OnCenterItemClickListener() {
@Override
public void onCenterItemClicked(@NonNull RecyclerView recyclerView, @NonNull CarouselLayoutManager carouselLayoutManager, @NonNull View v) {
final int intposition= recyclerView.getChildLayoutPosition(v);
}
},recyclerView,layoutManager);
//item滑动监听
layoutManager.addOnItemSelectionListener(new CarouselLayoutManager.OnCenterItemSelectionListener() {
@Override
public void onCenterItemChanged(int adapterPosition) {
LogUtils.d(adapterPosition);
if(adapterPosition==8){
layoutManager.scrollToPosition(17);
}
if(adapterPosition==18){
layoutManager.scrollToPosition(9);
}
}
});
for(int i=0;i<9;i++){
list.add(i+"");
}
for(int i=0;i<9;i++){
list.add(i+"");
}
for(int i=0;i<9;i++){
list.add(i+"");
}
myAdapter.setNewData(list);
layoutManager.scrollToPosition(9);
}
}