📌  相关文章
📜  Android中的CardView示例(1)

📅  最后修改于: 2023-12-03 14:59:17.105000             🧑  作者: Mango

Android中的CardView示例

CardView是Android 5.0 Lollipop中新增的控件,它可以用来展示一个卡片式的UI效果。CardView主要用于向用户展示信息,同时也可以被用于凸显信息或操作。本文将介绍如何在Android中使用CardView控件。

CardView概述

CardView是一个布局控件,它继承自FrameLayout。CardView可以通过设置阴影、圆角、背景颜色和边距等属性,来构建一个卡片式UI效果。

使用CardView控件需要在build.gradle中添加如下依赖:

implementation 'androidx.cardview:cardview:1.0.0'
CardView用法示例

以下是一个简单的CardView用法示例:

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="10dp"
    app:cardElevation="5dp"
    app:cardUseCompatPadding="true">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一个CardView示例!"/>

</androidx.cardview.widget.CardView>

在布局文件中,我们使用CardView作为根布局,然后在CardView中添加我们要展示的View,如上面的TextView。CardView的属性值如下:

  • app:cardCornerRadius:设置CardView的圆角半径,单位为dp。
  • app:cardElevation:设置CardView的海拔高度,即阴影的大小。
  • app:cardUseCompatPadding:设置是否使用兼容的内边距,默认值为true。
给CardView添加点击事件

我们可以为CardView添加点击事件,使其能够响应用户的点击操作。以下是给CardView添加点击事件的示例:

<androidx.cardview.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="10dp"
    app:cardElevation="5dp"
    app:cardUseCompatPadding="true">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一个CardView示例!"/>

</androidx.cardview.widget.CardView>
CardView cardView = findViewById(R.id.card_view);
cardView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // CardView被点击时的逻辑处理
    }
});

在代码中,我们先通过findViewById方法获取到CardView实例,然后为CardView添加点击事件监听器,当CardView被点击时执行相应的逻辑处理。

CardView与RecyclerView的结合使用

CardView经常被用于RecyclerView中,用于展示列表项。以下是一个RecyclerView中使用CardView的示例:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<String> mList;

    public class ViewHolder extends RecyclerView.ViewHolder {
        public CardView cardView;
        public TextView textView;

        public ViewHolder(View view) {
            super(view);
            cardView = (CardView) view.findViewById(R.id.card_view);
            textView = (TextView) view.findViewById(R.id.text_view);
        }
    }

    public MyAdapter(List<String> list) {
        mList = list;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.textView.setText(mList.get(position));
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

}

我们先创建一个MyAdapter类,它继承自RecyclerView.Adapter。在MyAdapter中,我们重写了onCreateViewHolder、onBindViewHolder和getItemCount方法。onCreateViewHolder方法用于创建ViewHolder实例,onBindViewHolder方法用于将数据绑定到ViewHolder实例,getItemCount方法用于获取列表项数量。

接下来,我们在onCreateViewHolder方法中,通过LayoutInflater将一个布局文件解析成View,然后将View添加到ViewHolder实例中。将ViewHolder中的CardView与我们要展示内容的TextView关联起来,最后将ViewHolder实例返回。

<androidx.cardview.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="10dp"
    app:cardElevation="5dp"
    app:cardUseCompatPadding="true">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</androidx.cardview.widget.CardView>

在布局文件中,我们使用CardView和TextView两个控件构建了一个列表项的布局。通过给CardView设置圆角和阴影属性,使其具有卡片式的UI效果。在代码中,我们在MyAdapter的onBindViewHolder方法中,将我们要展示的数据绑定到TextView上。

最后在Activity中,将RecyclerView与MyAdapter关联起来即可:

List<String> dataList = new ArrayList<>();
// 为dataList添加数据

RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new MyAdapter(dataList));
结语

本文介绍了如何在Android中使用CardView控件。通过设置不同的属性,我们可以实现不同类型的卡片式UI效果。使用CardView与RecyclerView结合使用,可以快速构建出具有卡片式UI效果的列表页。