【Android】10.4 卡片视图

分类:C#、Android、VS2015;

创建日期:2016-02-19

一、简介

Android 从5.0开始包含了一个全新的卡片视图小部件,这个新的小部件默认就像一张带有圆角和轻微阴影的白色卡片,称为卡片视图。

1、需要安装Xamarin.Android.Support.v7.CardView软件包

CardView是由Android Support v7支持库提供的,用C#编写Android应用程序时,要使用CardView,项目中必须包括Xamarin.Android.Support.v7.CardView软件包。

软件包的具体添加办法见10.2节的介绍。

2、CardView的常用属性

(1)布局属性

可以设置其padding、elevation、圆角半径、背景颜色等属性指定CardView的布局。每个属性还可以通过调用对应的CardView方法动态更改布局。注意这些属性除了背景颜色外其他都接受维度值,例如,11.5dp指定11.5密度无关的像素。

(2)Padding

CardView提供了五个内边距属性来定位卡片的内边距。可以在XML布局中设置,也可在代码中调用类似的方法:

(3)Elevation

CardView提供了两个高程属性:

其中,cardElevation表示CardView的Z轴阴影大小,cardMaxElevation表示CardView的Z轴阴影最大值。

高程(Elevation)的含义是:当增加cardElevation的值使阴影变大时,CardView看起来似乎悬浮在阴影背景的上方。cardElevation属性还可以确定重叠视图中的绘制顺序,较大值的cardElevation会覆盖较小值的cardElevation。

cardMaxElevation对于动态更改cardElevation很有用,它可以防止阴影扩展到比限定的最大值还大。

(4)圆角半径和背景色

可以用圆角半径和背景色来控制CardView的整体风格:

这些属性如下所示:

cardCornerRadius — — 各个角的CardView圆角半径.

cardBackgroundColor — —CardView的背景色.

例如,将cardCornerRadius设置为10dp ,cardBackgroundColor设置为"#FFFFCC" (淡黄色)。

3、必须在XML中为CardView指定一个命名空间

由于CardView是由Android Support v7支持库提供的,所以不能直接通过android命名空间获取或设置其属性。换言之,必须自定义一个XML命名空间作为CardView属性的前缀。例如,下面的代码声明了一个名为“cardview”的命名空间:

xmlns:cardview="http://schemas.android.com/apk/res-auto"

命名空间的名是你自己起的,此命名空间的范围仅限于本文件。

指定命名空间后,就可以通过该前缀来修改CardView的属性:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:card_view="http://schemas.android.com/apk/res-auto"

……>

<android.support.v7.widget.CardView

android:layout_width="fill_parent"

android:layout_height="245dp"

android:layout_gravity="center_horizontal"

cardview:cardElevation="4dp"

cardview:cardCornerRadius="5dp"/>

</ LinearLayout>

4、在Androd 4.4.2(Api 19)下使用CadView

在低于api21的设备上使用CardView时略有不同的行为:

  • 需要添加额外的空白边距让CardView呈现阴影。
  • CardView不会剪切与CardView圆角相交的子视图。

为了解决这些兼容性差异,CardView提供了两个附加的属性:

  • cardPreventCornerOverlap –将此属性设置为true,可在比api21低的版本上运行的应用程序中实现阴影填充,此设置可防止CardView内容与CardView圆角相交。
  • cardUseCompatPadding –如果希望在比Android 5.0更低的设备上使用CardView并且想让它看起来和Android 5.0或更高版本上运行的效果相同,需要将此属性设置为true。当启用此属性时,CardView会在低版本的设备上添加额外的填充以画出阴影,这有助于克服不同版本填充阴影效果的差异。

除了这些差别之外,其他设计步骤与在Android 6.0下的设计步骤都相同。

二、示例—ch1002CardViewDemo

1、运行截图

2、主要设计步骤

(1)安装Xamarin.Android.Support.v7.CardView软件包

具体安装办法见10.2节的介绍。

(2)添加ch1002_CardviewDemo.axml文件

在Resources/layout文件夹下添加该文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:cardview="http://schemas.android.com/apk/res-auto"
    android:paddingBottom="16dp"
    android:paddingTop="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <android.support.v7.widget.CardView
        android:id="@+id/cardview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        cardview:cardElevation="100dp"
        cardview:cardPreventCornerOverlap="true"
        cardview:cardBackgroundColor="#71C3DE"
        cardview:cardCornerRadius="8dp"
        android:layout_marginTop="48dp"
        android:layout_marginLeft="32dp"
        android:layout_marginRight="32dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:text="\n这是CardView小组件,该组件\n\n可显示带有圆角和阴影的卡片外观。\n" />
    </android.support.v7.widget.CardView>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Radius" />
        <SeekBar
            android:id="@+id/seekbarRadius"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="16dp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Elevation" />
        <SeekBar
            android:id="@+id/seekbarElevation"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="16dp" />
    </LinearLayout>
</LinearLayout>

(3)添加ch1002CardviewDemo.cs文件

在SrcDemos文件夹下添加该文件。

using Android.App;
using Android.OS;
using Android.Widget;
using Android.Support.V7.Widget;

namespace MyDemos.SrcDemos
{
    [Activity(Label = "【例10-2】卡片视图基本用法")]
    public class ch1002CardviewDemo : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.ch1002_CardviewDemo);
            var cardview = FindViewById<CardView>(Resource.Id.cardview1);
            var seekbarRadius = FindViewById<SeekBar>(Resource.Id.seekbarRadius);
            seekbarRadius.ProgressChanged += (s, e) =>
            {
                cardview.Radius = e.Progress;
            };
            var seekbarElevation = FindViewById<SeekBar>(Resource.Id.seekbarElevation);
            seekbarElevation.ProgressChanged += (s, e) =>
            {
                cardview.Elevation = e.Progress;
            };
        }
    }
}
时间: 2025-01-18 08:13:07

【Android】10.4 卡片视图的相关文章

【Android】10.5 滚动视图(RecyclerView)

分类:C#.Android.VS2015: 创建日期:2016-02-19 一.简介 滚动视图(RecyclerView)的用法与布局控件的用法类似,唯一不同的是,所有布局控件中都可以包含多个组件,而滚动视图里只能包含一个组件.换言之,滚动视图就是一个专门的容器,这个容器里面可以包含一个大于屏幕宽度(或高度)的组件,你可以采用拖拽的方式来观察它包含的内容. 不过,话又说回来,如果滚动视图包含的这个组件是一个布局容器,容器内仍然可以包含多个组件. 1.需要安装Xamarin.Android.Sup

Android编程动态创建视图View的方法

在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单.另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类. 在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,

android基础之SurfaceView视图中对画布的3种刷新方法

//MysurfaceView.java package com.example.surfaceview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.MotionEvent; import android.view.SurfaceHolder; im

Android 自学之滚动视图ScrollView

滚动视图ScrollView由FarmeLayout派生而出,他就是一个用于为普通组件添加垂直滚动条的组件:ScrollView里面最多包含一个组件,而ScrollView的作用就是为该组件添加一个垂直滚动条.(ScrollView的作用和JScrollPane非常相似,他们甚至不能被称为真正的容器.他们只是为其他的容器添加滚动条.)默认的情况下ScrollView只是为其他组件添加垂直滚动条,如果应用需要水平的滚动条,则可以借助于另一个组件:HorizontalScrollView来实现.Ho

Android 自学之画廊视图(Gallery)功能和用法

Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显示的是一个水平的列表框.Gallery与Spinner有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个.下一个列表项. Gallery常用的XML属性及相关方法 XML属性 相关方法 说明 android:animationDuration setAnim

android学习---Gallery画廊视图

Gallery与Spinner有共同父类:AbsPinner,说明Gallery与Spinner都是一个列表框.它们之间的区别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框.Spinner的作用是供用户选择,而Gallery则允许用户通过拖动查看上一个,下一个. Gallery用法与Spinner的用法形似,只要为它提供一个内容Adapter就可以了.Adapter的getView方法返回View作为Gallery列表的列表项.如果程序需要监控Gal

10.5 多视图模式日历案例概述

在接下来的几节中,我们将围绕“日历”这个案例进行实战演练,以提高读者对CSS的掌握和理解深度. 日历是日常生活中随处可见的工具.计算机出现后,产生了很多供人们记录日程安排的备忘录软件.随着互联网的普及,将日历存储在互联网上就更方便了,无论走到哪里,只要能够登录互联网,就可以随时查询和登记各种日程信息. Google推出了功能非常强大的日历软件,它不但具有普通日历的功能,还和移动通信相结合,用户可以和手机绑定,到达设定的时间时,用户就会收到一条提示短信.“Google日历”是完全基于Web的应用程

关于Android界面编程与视图(View)组件

UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在视图(View)组件.容器(ViewGroup)组件基础之上的. UI组件继承之View组件 ViewGroup----------->作为其他组件的容器使用. ViewGroup包含View组件即 (UI组件---->继承自View组件. ViewGroup组件---->继承自View组件

android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)

         GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView.GridView与ListView的区别在于:ListView只在一个方向上分布,GridView在两个方向上分布.所以使用GridView时一般都指定numColumns大于1,否则该属性默认值为1,就意味着改GridView只有一列,那就变成了ListView GridView的xml属性 android:strtchMode 的值为:      Im