RecyclerView竖直和水平的瀑布流布局
16lz
2021-01-23
-
设置布局管理者添加给RecyclerView
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rv); //设置布局管理者 //LinearLayoutManager:分竖直 横向 //Ctrl+Alt+M抽取代码 RecyclerView.LayoutManager layoutManger = getVerticalStaggered(); recyclerView.setLayoutManager(layoutManger); //设置适配器 // MyAdapter adapter=new MyAdapter(); // recyclerView.setAdapter(adapter); MyStaggerdGridAdapter adapter = new MyStaggerdGridAdapter(); recyclerView.setAdapter(adapter); } private RecyclerView.LayoutManager getVerticalStaggered() { //1.spanCout 列数 //2.方向 return new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); } private RecyclerView.LayoutManager getHStaggered() { //1.spanCout 列数 //2.方向 return new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL); }}
-
onCreateViewHolder 和onBindViewHolder 方法中设置高度,或者宽度来调整布局。
/*** Created by Administrator on 2016/11/30.*///是什么?是一堆 get方法 。由rv,lv,gv viewpager调用// RecyclerView.Adapter封装了 getView优化//条目的高度由什么决定 ?由内容的高度public class MyStaggerdGridAdapter extends RecyclerView.Adapter { //1.7 泛型自动推断 private List list = new ArrayList<>(); public MyStaggerdGridAdapter() { for (int i = 0; i < 30; i++) { list.add("经验值" + i); } } //条目数量 @Override public int getItemCount() { return list.size(); } //RecyclerView.ViewHolder是缓存条目控件 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { int itemId = R.layout.item; // View itemView=View.inflate(parent.getContext(),itemId,null); //1.条目布局 //2.RecyclerView 传入给item参考宽度 //3.是否把打气布局添加到父控件 true添加,报错 二次添加 false,不添加 仅参考宽度 View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid, parent, false); MyViewHolder myViewHolder = new MyViewHolder(itemView); //字段 return myViewHolder; } private Random random = new Random(); @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MyViewHolder hd = (MyViewHolder) holder; //数据 String item = list.get(position); hd.text.setText(item); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) hd.img.getLayoutParams(); params.width = RelativeLayout.LayoutParams.MATCH_PARENT; params.height = 200 + random.nextInt(50); System.out.println(params); } static class MyViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.img) ImageView img; @BindView(R.id.text) TextView text; @BindView(R.id.activity_main) RelativeLayout activityMain; public MyViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } }}
更多相关文章
- Android适配底部虚拟键盘遮挡布局的解决方案
- Android参数设置父布局集体宽高
- Android 四大组件,五大存储,六大布局
- android 布局随笔----用户登录界面
- android五种布局模式
- Android的布局管理器与java中的实现方式不同
- 布局管理器