CardView的简单使用

来源:互联网 发布:图像语义分割算法论文 编辑:程序博客网 时间:2024/06/04 19:21
  • CardView继承与FrameLayout,是一个ViewGroup。

  • 依赖包: compile ‘com.android.support:cardview-v7:24.1.0’

  • 特点

    1. 有rounded corner(圆角)和shadow(阴影)

  • 方法说明

    • card_view:cardBackgroundColor 设置背景色
    • card_view:cardCornerRadius 设置圆角大小
    • card_view:cardElevation 设置z轴阴影
    • card_view:cardMaxElevation 设置z轴最大高度值
    • card_view:cardUseCompatPadding 是否使用CompadPadding
    • card_view:cardPreventCornerOverla 在xml文件中设置内边距,在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠
    • card_view:contentPadding 内容的padding
    • card_view:contentPaddingLeft 内容的左padding
    • card_view:contentPaddingTop 内容的上padding
    • card_view:contentPaddingRight 内容的右padding
    • card_view:contentPaddingBottom 内容的底padding
  • 使用情景

    • 需要显示层次的内容时,可以考虑使用
    • 需要显示列表和网格时,可以考虑使用
  • 低版本兼容问题
    当设置elevation后,低版本会自动留出空间用于显示阴影,但在android L中需要手动设置margin边距来预留空间,所以我们需要适配:分别再res下新建values,values-v21文件夹,在文件下新建dimens.xml文件。在values下的dimens设置0dp,21下根据需要设置,在布局文件中引用。

这里写图片描述

这里写图片描述

  • 简单实用实例

    1.主布局文件 activity_card_view.xml:

 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    xmlns:toolbar="http://schemas.android.com/apk/res-auto"    android:background="@android:color/white"    android:orientation="vertical"    android:layout_height="match_parent"> <android.support.v7.widget.Toolbar     android:layout_width="match_parent"     android:background="@color/colorPrimary"     toolbar:navigationIcon="?attr/homeAsUpIndicator"     toolbar:title="toolbar"     android:paddingTop="25dp"     android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView     android:id="@+id/activity_card_view"     android:layout_width="match_parent"     android:background="@android:color/white"     android:layout_height="match_parent"     /> </LinearLayout>

2.RecyclerView的item布局item_cardview_layout.xml

 <?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:card_view="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    android:layout_width="match_parent"    card_view:cardBackgroundColor="@color/colorAccent"    card_view:cardPreventCornerOverlap="true"    card_view:cardUseCompatPadding="true"    card_view:cardCornerRadius="5dp"    android:layout_margin="@dimen/card_margin"    android:foreground="?android:attr/selectableItemBackground"    card_view:contentPadding="2dp"    card_view:cardElevation="5dp"    android:layout_height="wrap_content">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="100dp">        <ImageView            android:id="@+id/picture"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_centerInParent="true"            android:scaleType="centerCrop" />        <TextView            android:clickable="true"            android:id="@+id/name"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_marginBottom="10dp"            android:layout_marginRight="10dp"            android:gravity="right|bottom"            android:textColor="@android:color/black"            android:textSize="24sp" />    </RelativeLayout></android.support.v7.widget.CardView>

3.测试实体类

    /** * Created by meijing on 2017/2/19. */public class ImageInfor {    private String name;    private int imageId;    public ImageInfor(int imageId, String name) {        this.imageId = imageId;        this.name = name;    }    public int getImageId() {        return imageId;    }    public void setImageId(int imageId) {        this.imageId = imageId;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

4.RecylcerView的适配器

import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.project.coordinatortablayout.R;import java.util.List;/** * Created by meijing on 2017/2/19. */public class RecyclerviewAdapter   extends RecyclerView.Adapter<CardViewRecylcerviewHolder> {    private Context  mContext;    private List<ImageInfor>  list;    public RecyclerviewAdapter(Context mContext, List<ImageInfor> list) {        this.mContext = mContext;        this.list = list;    }    @Override    public CardViewRecylcerviewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View  view= LayoutInflater.from(mContext).inflate(R.layout.item_cardview_layout,null);        return new CardViewRecylcerviewHolder(view);    }    @Override    public void onBindViewHolder(CardViewRecylcerviewHolder holder, int position) {        ImageInfor bean = list.get(position);        holder.getTvName().setText(bean.getName());        holder.getIviocn().setBackgroundResource(bean.getImageId());    }    @Override    public int getItemCount() {        return list.size();    }}class CardViewRecylcerviewHolder extends RecyclerView.ViewHolder{    private TextView  tvName;    private ImageView iviocn;    public CardViewRecylcerviewHolder(View itemView) {        super(itemView);        iviocn = (ImageView) itemView.findViewById(R.id.picture);        tvName = (TextView) itemView.findViewById(R.id.name);    }    public TextView getTvName() {        return tvName;    }    public ImageView getIviocn() {        return iviocn;    }}

5.主界面:

 import android.os.Bundle;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.project.coordinatortablayout.R;import com.project.coordinatortablayout.ui.toolbar.config.BaseTransparentBarActivity;import java.util.ArrayList;import java.util.List;/** * cardview * 1.依赖包:  compile 'com.android.support:cardview-v7:24.1.0' * 2.cardview继承与framelayout,是一个viewgroup, * 3.特点:有设置shadow(阴影),rounded conrner(圆角)的属性 * 3.属性方法: *   CardView.cardBackgroundColor 设置背景色     CardView.cardCornerRadius 设置圆角大小     CardView.cardElevation 设置z轴阴影     CardView.cardMaxElevation 设置z轴最大高度值     CardView.cardUseCompatPadding 是否使用CompadPadding  设置内边距     CardView.cardPreventCornerOverlap  在xml文件中设置内边距,在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠     CardView.contentPadding 内容的padding     CardView.contentPaddingLeft 内容的左padding     CardView.contentPaddingTop 内容的上padding     CardView.contentPaddingRight 内容的右padding     CardView.contentPaddingBottom 内容的底padding   4.margin低版本兼容:可以在/res/value和/res/value-v21分别创建dimens.xml文件,在dimens.xml里,随意命名,                          对于Android 5.0以上的设置数值0dp,对于Android 5.0以下的设置数值(根据实际需求)   5.使用情景:需要显示层次性的内容,可以考虑使用。               需要显示列表或网格时,可以考虑使用。 */public class CardViewActivity extends AppCompatActivity{    private RecyclerView  mRecyclerView;    //数据源    private List<ImageInfor>  list=new ArrayList<>();    private RecyclerviewAdapter  mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_card_view);        //初始化组件        initView();        //初始化数据        initData();    }    /**     * 初始化组件     */    private void initView() {        mRecyclerView= (RecyclerView) findViewById(R.id.activity_card_view);    }    /**     * 初始化数据     */    private void initData() {        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        list.add(new ImageInfor(R.drawable.empty_default_img, "数据1"));        LinearLayoutManager  layoutManager=new LinearLayoutManager(this);        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);        mRecyclerView.setLayoutManager(layoutManager);        mRecyclerView.setItemAnimator(new DefaultItemAnimator());        mAdapter=new RecyclerviewAdapter(this,list);        mRecyclerView.setAdapter(mAdapter);    }}

6 图标:
这里写图片描述

6 效果图
这里写图片描述

0 0
原创粉丝点击