CardScrollView

此项为 API 级别 XE12 中的新增配置

一个 View,用于显示水平滚动的子视图,称为卡片。

这些卡片来自与 CardScrollView 关联的 CardScrollAdapter。每张卡片在视觉上都代表一个特定的 Object 项。

如需了解详情,请参阅在 Activity 中滚动卡片

常规用法

  1. 使用标准视图层次结构或 CardBuilder 类构建一组卡片。
  2. 实现 CardScrollAdapter 以将一组卡提供给 CardScrollView。每张卡片都有唯一的 Object 标识符,代表特定的 Object 项。
  3. 将 activity 的内容视图设置为 CardScrollView,或在布局中使用 CardScrollView

处理滚动和互动

CardScrollView 使用从 AdapterView 继承的以下监听器接口通知您:

嵌套类
枚举 CardScrollView.Animation 定义用于导航到、插入或删除卡片的动画类型。
继承的常量
继承的字段
公共构造函数
CardScrollView上下文上下文)
CardScrollView上下文上下文,AttributeSet 属性)
CardScrollView(Context 上下文, AttributeSet 属性, int defStyle)
公共方法
无效
布尔值
animate(整数位置,CardScrollView.Animation animationType)
无效
停用()
CardScrollAdapter
长整型数值
整型
查看
布尔值
布尔值
布尔值
onKeyDown(int keyCode、KeyEvent 事件)
无效
onWindowFocusChanged(布尔值 hasWindowFocus)
无效
setAdapterCardScrollAdapter 适配器)
无效
setEmptyView(View emptyView)
无效
setHorizontalScrollBarEnabled(布尔值启用)
无效
setSelection(int position)
受保护的方法
布尔值
布尔值
无效
无效
onLayout(布尔值已更改、int 左侧、int 顶部、int 右侧、int 底部)
无效
onVisibilityChanged(View changedView, int visibility)
继承的方法

公共构造函数

在 API 级别 XE12 中添加

public CardScrollView (Context context)

在 API 级别 XE12 中添加

public CardScrollView (Context context, AttributeSet attrs)

在 API 级别 XE12 中添加

public CardScrollView (Context context, AttributeSet attrs, int defStyle)

公共方法

在 API 级别 XE12 中添加

public void activate ()

指示 CardScrollView 启用并准备好显示。 TODO(ajcbik):调查是否可以将 [de]activate 替换为焦点事件(请参阅 b/17574566 请求)。

在 API 级别 XE21 中添加

public Boolean animate (int position, CardScrollView.Animation animationType)

在给定位置为卡片添加动画效果,其中 animationType 应为以下项之一:

  • NAVIGATION:从任意位置移至指定卡,并采用常规导航。
  • INSERTION:移到指定卡片后,该卡片会在插入后显示在视图中,
  • DELETION:指定卡片在删除后会从视图中消失。
在以下情况下,系统会跳过动画:如果滚动条处于停用状态、之前的自主动画仍在播放中,或位置无效。仅当当前选择了已删除的卡时,才会出现删除动画。

CardScrollAdapter 中执行相应的变更后,应使用插入和删除动画。动画会在动画播放过程中的适当时刻调用适配器上的 notifyDataSetChanged(),即使用户跳过或提前终止动画也是如此。

用法示例:

 .... insert card at p-th position in adapter ....
 animate(p, INSERTION);    // calls notifyDataSetChanged() on adapter
 

参数
位置 动画涉及的卡片
animationType控制要使用的动画类型
返回
  • 动画是否已启动
在 API 级别 XE12 中添加

public void deactivate ()

告知 CardScrollView 停用;在再次调用 activate() 之前,它不会显示。

在 API 级别 XE12 中添加

public CardScrollAdapter getAdapter ()

public long getSelectedItemId ()

在 API 级别 XE12 中添加

public int getSelectedItemPosition ()

在 API 级别 XE12 中添加

public 查看 getSelectedView ()

在 API 级别 XE12 中添加

public 布尔值 isActivated ()

public 布尔值 isHorizontalScrollBarEnabled ()

public 布尔值 onKeyDown (int keyCode, KeyEvent event)

public void onWindowFocusChanged (boolean hasWindowFocus)

在 API 级别 XE12 中添加

public void setAdapter (CardScrollAdapter 适配器)

public void setEmptyView (View emptyView)

CardScrollView 不支持 setEmptyView(View)

为了实现适当的动画和可拖动行为,请改为使用适用于空数据集的单个空视图的适配器。

public void setHorizontalScrollBarEnabled (boolean enable)

在 API 级别 XE12 中添加

public void setSelection (int position)

受保护的方法

Protect 布尔值 awakenScrollBars ()

唤醒水平滚动条(如果有)。

Protect 布尔值 dispatchGenericFocusedEvent (MotionEvent 事件)

Protect void initializeScrollbars (TypedArray a)

在 API 级别 XE12 中添加

Protect void onLayout (布尔值已更改,int 左侧,int 顶部,int 右侧,int 底部)

Protect void onVisibilityChanged (View changedView, int visibility)