Android >> 26. RecyclerView(二)— 实现横向滚动和瀑布流布局

首先在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() 方法修改一下

@Override
protected 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 文件中

@Override
protected 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张图片
(为了方便演示,我将个别子项的名字设为重复)

你可能感兴趣的:(Android,安卓开发)