CardView的基本使用

CardView的基本使用CardView 是用于实现卡片式布局效果的重要控件 实际上也是一个 frameLayout 只是额外提供了圆角和阴影 看上去有立体效果 效果如下 xmlversion 1 0 encoding utf 8

1. CardView   

CardView是用于实现卡片式布局效果的重要控件,实际上也是一个frameLayout,只是额外提供了圆角和阴影,看上去有立体效果。

效果如下:

CardView的基本使用

 

 
   
   
    
     
     
    
  

MainActivity

package com.example.mycardview; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MainActivity extends AppCompatActivity { private Fruit[] fruits = {new Fruit("Apple", R.drawable.apple), new Fruit("Banana", R.drawable.banana), new Fruit("Orange", R.drawable.orange), new Fruit("Watermelon", R.drawable.watermelon), new Fruit("Pear", R.drawable.pear), new Fruit("Grape", R.drawable.grape), new Fruit("Pineapple", R.drawable.pineapple), new Fruit("Strawberry", R.drawable.strawberry), new Fruit("Cherry", R.drawable.cherry), new Fruit("Mango", R.drawable.mango)}; private List 
  
    fruitList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFruits(); RecyclerView rl = findViewById(R.id.rl); GridLayoutManager layoutManager = new GridLayoutManager(this, 2); rl.setLayoutManager(layoutManager); FruitAdapter adapter = new FruitAdapter(fruitList); rl.setAdapter(adapter); } private void initFruits() { fruitList.clear(); for (int i = 0; i < 50; i++) { Random random = new Random(); int index = random.nextInt(fruits.length); fruitList.add(fruits[index]); } } } 
  

MainActivity  .xml

 
   
   
    
  

adapter:

package com.example.mycardview; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import java.util.List; public class FruitAdapter extends RecyclerView.Adapter 
  
    { private static final String TAG = "FruitAdapter"; private Context mContext; private List 
   
     mFruitList; static class ViewHolder extends RecyclerView.ViewHolder { CardView cardView; ImageView fruitImage; TextView fruitName; public ViewHolder(View view) { super(view); cardView = (CardView) view; fruitImage = (ImageView) view.findViewById(R.id.fruit_image); fruitName = (TextView) view.findViewById(R.id.fruit_name); } } public FruitAdapter(List 
    
      fruitList) { mFruitList = fruitList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (mContext == null) { mContext = parent.getContext(); } View view = LayoutInflater.from(mContext).inflate(R.layout.fruit_item, parent, false); final ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Fruit fruit = mFruitList.get(position); holder.fruitName.setText(fruit.getName()); Glide.with(mContext).load(fruit.getImageId()).into(holder.fruitImage); } @Override public int getItemCount() { return mFruitList.size(); } } 
     
    
  

item:

 
   
   
    
     
     
    
  
Fruit package com.example.mycardview; public class Fruit { private String name; private int imageId; public Fruit(String name, int imageId) { this.name = name; this.imageId = imageId; } public String getName() { return name; } public int getImageId() { return imageId; } }

 

2.AppBarLayout

当toolbar和RecyclerView一起共用的时候,RV遮挡了toolbar如下:

CardView的基本使用

 
   
   
    
    
  

这个时候可以使用AppBarLayout,他实际是一个垂直的linearLayout,修改代码:

 
   
   
    
     
    
    
    
    
    
  

 

AppBarLayout包裹Toolbar

 
   
    
  

 

app:layout_behavior=”@string/appbar_scrolling_view_behavior”

 
  

效果如下,但是toolbar遮挡了部分rv

CardView的基本使用

可以使用CoordinatorLayout解决:

 
   
   
    
     
      
     
     
     
     
     
    
  

使用CoordinatorLayout将所有的布局包裹一下:

CardView的基本使用

转发标明出处:https://blog.csdn.net/_/article/details/

点击下载

 

android互助群:

CardView的基本使用

感谢:郭霖的《第一行代码 第二版》

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210238.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午8:00
下一篇 2026年3月19日 上午8:01


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号