Android >> 26. RecyclerView(二)— 实现横向滚动和瀑布流布局
16lz
2021-01-23
首先在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 的布局设为横向滚动
RecyclerView
将ListView
的布局排列交由LayoutManager
管理。而LayoutManager
中制定了一套可扩展的布局排列接口,子类只要按照接口的规范来实现,就能定制出各种不同排列方式的布局。
除了LinearLayoutManager
之外,RecyclerView
还提供了GridLayoutManager
和StaggeredGridLayoutManager
这两种内置的布局排列方式。
其中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_width
和layout_height
要分别设置为match_parent
和wrap_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
换成StaggeredGridLayoutManager
,StaggeredGridLayoutManager
的第一个参数是指明布局的列数;第二个参数用于指明布局的排列方向
(为了方便演示,我将个别子项的名字设为重复)
更多相关文章
- Android软键盘遮挡布局问题;
- Android对用五大布局
- Android使用GridLayout布局简单的计算器界面
- android:MATCH_PARENT是什么类型的布局
- android布局中容易混淆的几个属性
- Android StaggeredGridLayoutManager布局RecyclerView在滚动状态
- android横竖屏切换和布局的问题
- Android UI开发篇之 ViewPager+九宫格布局 实现左右滑动