首先在Android >> 26. RecyclerView(一)中,我们实现了RecyclerView 的基本使用,现在讲讲如何实现横向滚动和瀑布流布局

横向滚动

首先将Item 子项的布局设为垂直排列(图片在上文字在下)便于查看

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="100dp"    android:layout_height="wrap_content">    <ImageView        android:id="@+id/fruit_image"        android:layout_width="100dp"        android:layout_height="100dp"        android:layout_marginBottom="30dp"/>    <TextView        android:id="@+id/fruit_name"        android:layout_width="100dp"        android:layout_height="200dp"        android:layout_gravity="center"        android:textSize="18dp"/>LinearLayout>

然后将Activity 的onCreate() 方法修改一下

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_recycle_view);    initFruits();    RecyclerView recyclerView = findViewById(R.id.recycler_view);    LinearLayoutManager layoutManager = new LinearLayoutManager(this);        /* 添加 */    layoutManager.setOrientation(RecyclerView.HORIZONTAL);    /*******/        recyclerView.setLayoutManager(layoutManager);    FruitAdapter adapter = new FruitAdapter(fruitList);    recyclerView.setAdapter(adapter);}

即可将RecyclerView 的布局设为横向滚动

Android >> 26. RecyclerView(二)— 实现横向滚动和瀑布流布局_第1张图片
RecyclerViewListView 的布局排列交由LayoutManager 管理。而LayoutManager 中制定了一套可扩展的布局排列接口,子类只要按照接口的规范来实现,就能定制出各种不同排列方式的布局。

除了LinearLayoutManager 之外,RecyclerView 还提供了GridLayoutManagerStaggeredGridLayoutManager 这两种内置的布局排列方式。
其中GridLayoutManager 用于实现网格布局,而StaggeredGridLayoutManager 用于实现瀑布流布局。

瀑布流布局

首先修改Item 子项的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_margin="20dp">    <ImageView        android:id="@+id/fruit_image"        android:layout_width="100dp"        android:layout_height="100dp"        android:layout_gravity="center_horizontal"/>    <TextView        android:id="@+id/fruit_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:layout_gravity="left"/>LinearLayout>

注意父布局的layout_widthlayout_height 要分别设置为match_parentwrap_content

android:layout_width="match_parent"android:layout_height="wrap_content"

然后回到Activity 的java 文件中

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_recycle_view);    initFruits();    RecyclerView recyclerView = findViewById(R.id.recycler_view);    StaggeredGridLayoutManager layoutManager =            new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);    recyclerView.setLayoutManager(layoutManager);    FruitAdapter adapter = new FruitAdapter(fruitList);    recyclerView.setAdapter(adapter);}

将之前的LinearLayoutManager 换成StaggeredGridLayoutManagerStaggeredGridLayoutManager 的第一个参数是指明布局的列数;第二个参数用于指明布局的排列方向

Android >> 26. RecyclerView(二)— 实现横向滚动和瀑布流布局_第2张图片
(为了方便演示,我将个别子项的名字设为重复)

更多相关文章

  1. Android软键盘遮挡布局问题;
  2. Android对用五大布局
  3. Android使用GridLayout布局简单的计算器界面
  4. android:MATCH_PARENT是什么类型的布局
  5. android布局中容易混淆的几个属性
  6. Android StaggeredGridLayoutManager布局RecyclerView在滚动状态
  7. android横竖屏切换和布局的问题
  8. Android UI开发篇之 ViewPager+九宫格布局 实现左右滑动

随机推荐

  1. Google Android(安卓)SDK开发范例大全(第
  2. [置顶] Android(安卓)65K问题之Multidex
  3. 揭破android中的闹钟app 二
  4. Android(安卓)Unit Test学习
  5. 【自动化测试】Android(安卓)Monkey实践
  6. android关于多dex打包的理解
  7. Android(安卓)强大的开发支持库组件AppFr
  8. Android事件分发机制浅析
  9. Android系统架构概述
  10. Android的两种数据存储方式分析(二)