Fetch the repository succeeded.
This action will force synchronization from zhangtao/TvRecyclerView, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
- 针对TV端的特性对RecyclerView进行了适配与开发;
- 优化TwoWayView在TV端的适配和延伸;
- 支持v7包原生的LayoutManager;
- 支持阿里vlayout的布局及其它第三方LayoutManager;
// support版本
implementation 'com.owen:tv-recyclerview:2.1.1.1'
// androidx版本
implementation 'com.owen:tv-recyclerview:3.0.0'
属性 | 值/类型 | 简介 |
---|---|---|
tv_layoutManager | string | 指定LayoutManager |
tv_selectedItemOffsetStart | dimension | 选中的item距离开始(上/左)的偏移量, 与tv_selectedItemIsCentered二选一 |
tv_selectedItemOffsetEnd | dimension | 选中的item距离结尾(右/下)的偏移量, 与tv_selectedItemIsCentered二选一 |
tv_selectedItemIsCentered | boolean | 选中居中, 与上面的偏移量二选一 |
tv_isMenu | boolean | 是否为菜单模式 |
tv_isMemoryFocus | boolean | 是否记忆焦点 |
tv_loadMoreBeforehandCount | int | 提前多少个开始加载更多 |
tv_optimizeLayout | boolean | 布局优化, 常用的LayoutManager作用不是很大,但对MetroGridLayoutManager这种计算量大的布局来说有一定的提升 |
tv_verticalSpacingWithMargins | dimension | 设置布局item间的竖向间距 |
tv_horizontalSpacingWithMargins | dimension | 设置布局item间的横向间距 |
自定义LayoutManager属性 | ||
tv_numColumns | int | 列数, GridLayoutManager及子类所拥有 |
tv_numRows | int | 行数, GridLayoutManager及子类所拥有 |
tv_laneCountsStr | string | 每块区域的列数, MetroGridLayoutManager所拥有, 格式 如:24,60,10 |
tv_isIntelligentScroll | boolean | 根据区域智能滚动, MetroGridLayoutManager所拥有 |
支持快速移动焦点不丢失;
支持Item选中放大不叠压;
多种选中和滚动方式:
//选中指定项
setSelection(int psotion);
//选中指定项(平滑的滚动方式)
setSelectionWithSmooth(int position)
//滚动到指定位置, 可以指定便宜量, 可以指定是否获取焦点
scrollToPositionWithOffset(int position, int offset, boolean isRequestFocus)
//平滑的滚动到指定位置, 可以指定便宜量, 可以指定是否获取焦点
smoothScrollToPositionWithOffset(int position, int offset, boolean isRequestFocus)
监听回调
//item选中、点击监听
mRecyclerView.setOnItemListener(new TvRecyclerView.OnItemListener() {
@Override
public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) {
//上次选中
}
@Override
public void onItemSelected(TvRecyclerView parent, View itemView, int position) {
//当前选中
}
@Override
public void onItemClick(TvRecyclerView parent, View itemView, int position) {
//点击
}
});
//焦点移动边界监听
mRecyclerView.setOnInBorderKeyEventListener(new TvRecyclerView.OnInBorderKeyEventListener() {
@Override
public boolean onInBorderKeyEvent(int direction, View focused) {
switch (direction) {
case View.FOCUS_DOWN:
break;
case View.FOCUS_UP:
break;
case View.FOCUS_LEFT:
break;
case View.FOCUS_RIGHT:
break;
}
//返回true时,事件将会被拦截由你来控制焦点
return false;
}
});
//加载更多监听
mRecyclerView.setOnLoadMoreListener(new TvRecyclerView.OnLoadMoreListener() {
@Override
public boolean onLoadMore() {
mRecyclerView.setLoadingMore(true); //正在加载数据
mLayoutAdapter.appendDatas(); //加载数据
mRecyclerView.setLoadingMore(false); //加载数据完毕
return true; //是否还有更多数据
}
});
扣 扣 群:484790001(注:加群时请写明来源及目的)
焦点框框架TvFocusBorder
Tab框架TvTabLayout
Tv控件TvWidget
作者 owen
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。