zoukankan      html  css  js  c++  java
  • Android学习——RecyclerView

    实现横向滚动和瀑布流布局

    横向滚动:

    修改布局fruit_item.xml,将元素改为垂直排列

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:layout_width="wrap_content"
     3     android:layout_height="wrap_content"
     4     android:orientation="vertical">
     5 
     6     <ImageView
     7         android:id="@+id/fruit_image"
     8         android:layout_width="100dp"
     9         android:layout_height="100dp"
    10         android:layout_gravity="center_horizontal" />
    11 
    12     <TextView
    13         android:id="@+id/fruit_name"
    14         android:layout_width="wrap_content"
    15         android:layout_height="wrap_content"
    16         android:layout_gravity="center_vertical"
    17         android:layout_marginTop="10dp" />
    18 </LinearLayout>

    修改MainActivity,调用LinearLayoutManager的setOrientation()方法来设置布局的排列方向,默认是纵向,传入LinearLayoutManager.HORIZONTAL表示让布局横向排列

     1 public class MainActivity extends AppCompatActivity {
     2 
     3     private List<Fruit> fruitList = new ArrayList<>();
     4 
     5     @Override
     6     protected void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9         initFruits();
    10         RecyclerView recyclerView = findViewById(R.id.relative_view);
    11         LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    12         layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
    13         recyclerView.setLayoutManager(layoutManager);
    14         FruitAdapter adapter = new FruitAdapter(fruitList);
    15         recyclerView.setAdapter(adapter);
    16     }
    17     private  void initFruits(){
    18         for (int i = 0;i<2;i++){
    19             Fruit apple = new Fruit("Apple",R.drawable.apple);
    20             fruitList.add(apple);
    21             Fruit banner = new Fruit("Banner",R.drawable.banner);
    22             fruitList.add(banner);
    23             Fruit orange = new Fruit("Orange",R.drawable.orange);
    24             fruitList.add(orange);
    25             Fruit watermelon = new Fruit("Watermelon",R.drawable.watermelon);
    26             fruitList.add(watermelon);
    27             Fruit pear = new Fruit("Pear",R.drawable.pear);
    28             fruitList.add(pear);
    29             Fruit grape = new Fruit("Grape",R.drawable.grape);
    30             fruitList.add(grape);
    31             Fruit pineapple = new Fruit("Pineapple",R.drawable.pineapple);
    32             fruitList.add(pineapple);
    33             Fruit strawberry = new Fruit("Strawberry",R.drawable.strawberry);
    34             fruitList.add(strawberry);
    35             Fruit cherry = new Fruit("Cherry",R.drawable.cherry);
    36             fruitList.add(cherry);
    37             Fruit mango = new Fruit("Mango",R.drawable.mango);
    38             fruitList.add(mango);
    39 
    40         }
    41     }
    42 }

    瀑布流布局

    修改fruit_item布局,使用layout_margin属性让子项之间互留间距,TextView对其属性改为居左对齐

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:layout_width="match_parent"
     3     android:layout_height="wrap_content"
     4     android:orientation="vertical"
     5     android:layout_margin="5dp"
     6     >
     7 
     8     <ImageView
     9         android:id="@+id/fruit_image"
    10         android:layout_width="100dp"
    11         android:layout_height="100dp"
    12         android:layout_gravity="center_horizontal" />
    13 
    14     <TextView
    15         android:id="@+id/fruit_name"
    16         android:layout_width="wrap_content"
    17         android:layout_height="wrap_content"
    18         android:layout_gravity="left"
    19         android:layout_marginTop="10dp" />
    20 </LinearLayout>

    修改MainActivity

     1 public class MainActivity extends AppCompatActivity {
     2 
     3     private List<Fruit> fruitList = new ArrayList<>();
     4 
     5     @Override
     6     protected void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9         initFruits();
    10         RecyclerView recyclerView = findViewById(R.id.relative_view);
    11         //创建StaggeredGridLayoutManager实例。StaggeredGridLayoutManager的构造函数接收两个参数,第一个是布局的列数,第二个是布局的排列方向,StaggeredGridLayoutManager.VERTICAL是让布局纵向排列
    12         StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
    13         //吧创建好的实例设置到RecyclerView中
    14         recyclerView.setLayoutManager(layoutManager);
    15         FruitAdapter adapter = new FruitAdapter(fruitList);
    16         recyclerView.setAdapter(adapter);
    17     }
    18     private  void initFruits(){
    19         for (int i = 0;i<2;i++){
    20             Fruit apple = new Fruit(getRandomLengthName("Apple"),R.drawable.apple);
    21             fruitList.add(apple);
    22             Fruit banner = new Fruit(getRandomLengthName("Banner"),R.drawable.banner);
    23             fruitList.add(banner);
    24             Fruit orange = new Fruit(getRandomLengthName("Orange"),R.drawable.orange);
    25             fruitList.add(orange);
    26             Fruit watermelon = new Fruit(getRandomLengthName("Watermelon"),R.drawable.watermelon);
    27             fruitList.add(watermelon);
    28             Fruit pear = new Fruit(getRandomLengthName("Pear"),R.drawable.pear);
    29             fruitList.add(pear);
    30             Fruit grape = new Fruit(getRandomLengthName("Grape"),R.drawable.grape);
    31             fruitList.add(grape);
    32             Fruit pineapple = new Fruit(getRandomLengthName("Pineapple"),R.drawable.pineapple);
    33             fruitList.add(pineapple);
    34             Fruit strawberry = new Fruit(getRandomLengthName("Strawberry"),R.drawable.strawberry);
    35             fruitList.add(strawberry);
    36             Fruit cherry = new Fruit(getRandomLengthName("Cherry"),R.drawable.cherry);
    37             fruitList.add(cherry);
    38             Fruit mango = new Fruit(getRandomLengthName("Mango"),R.drawable.mango);
    39             fruitList.add(mango);
    40 
    41         }
    42     }
  • 相关阅读:
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    软件工程最后一次作业
    软件工程第四次作业
    软件工程第二次作业
    软件工程最后一次作业
    软件工程第二次结对作业
    软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/znjy/p/14906005.html
Copyright © 2011-2022 走看看