开发中遇到的问题整理:

多个RecycleView混排,上下左右按钮的处理:

上图中,遇到的问题:

1. 焦点在EditText时,按下键,焦点直接移动到下方的Recommendations列表中;

2. 焦点在Recommendations列表中时,按上键,焦点有时移动到中间的History列表中,有时移动到clear all按钮上,有时还会移动到上面的EditText中

3. 焦点在搜索历史中时,右移,焦点移不到clear all按钮上

4. 当下方列表没有数据时,在EditText上按下键,也会失去焦点

解决方法:

1 . 从EditText按下键的处理 ,关键是失去焦点的条件的处理:

et_search.setOnFocusChangeListener(new View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {Log.e(TAG,"et_search   onFocusChange="+hasFocus);if(hasFocus){et_search.setBackgroundResource(R.drawable.input_bg_clip);ClipDrawable bgDrawable = (ClipDrawable) et_search.getBackground();bgDrawable.setLevel(3000);search_scroll.smoothScrollTo(0,0);}else{et_search.setBackgroundResource(R.drawable.input_bg_clip_normal);ClipDrawable bgDrawable = (ClipDrawable) et_search.getBackground();bgDrawable.setLevel(3000);imm.hideSoftInputFromWindow(et_search.getWindowToken(), 0);//当搜索历史有数据时,搜索历史获取焦点if(rl_history.getVisibility() == View.VISIBLE){list_history.requestFocus();
//                        list_history.setDefaultSelect(0);}}}});

2 . 从推荐列表按上键的处理:

在onKeyDown的上键处理中加了

if(list_searchRecom.hasFocus() && rl_history.getVisibility() == View.VISIBLE){Log.e(TAG,"KeyEvent.KEYCODE_DPAD_UP=====111111======");list_history.requestFocus();
}

打印信息虽然走了,但list_history.requestFocus();没有起作用。

修改:先定义一个标示位,设为0,在上键处理 中加入

if(list_searchRecom.hasFocus() && rl_history.getVisibility() == View.VISIBLE){Log.e(TAG,"KeyEvent.KEYCODE_DPAD_UP=====111111======");recommendStats = 1;
}

然后在推荐列表的不选中监听中加入下列代码:setOnItemNoSelectListener在adapter中定义接口,然后在失去焦点的监听中调用。

simpleRecyclerAdapter.setOnItemNoSelectListener(new SimpleRecyclerAdapter.OnItemNoSelectListener() {@Overridepublic void onItemNoSelect(View view, int position, int bigPosition) {Log.e(TAG,"list_searchRecom    onItemNoSelect==="+recommendStats);if(recommendStats == 1){//因为RecycleView的就近原则,有时焦点可以自己移动到搜索历史上,如果不加(!list_history.hasFocus()判断条件会造成有两个item都显示选中状态,只有在搜索历史没有焦点的时候,才让它强制获取焦点if(!list_history.hasFocus()){list_history.requestFocus();}recommendStats = 0;}}
});

上述修改虽然会让搜索历史获取焦点,但焦点有时在第一项上,有时在别的项上。如果要都跳转到第一项上,需要另外再处理,当焦点跳转到别的项时,先把别的项的选中状态去掉,然后再跳转到第一项上。

android tv 遥控器按键的处理(例一)相关推荐

  1. android 按键分析,Android TV开发按键与焦点深入分析(四)

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前面三篇都是从源码的角度分析按键事件.焦点变换的原理,作为应用层的开发者, 分析源码都是带着实际的开发困惑的,要不然谁没 ...

  2. android tv key事件,Android TV中按键事件和焦点处理总结

    本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口.了解这些不同的接口和区别,有助于很快的上手TV端的开发 ...

  3. Android TV中按键事件和焦点处理总结

    本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口.了解这些不同的接口和区别,有助于很快的上手TV端的开发 ...

  4. cocos2d-x 响应android TV 遥控器 手柄的添加

    刚接了wp8的,又要转接TV版的啦!又是一顿忙活. 一开始接了第三方的android SDK 发现UI线程会被卡死.然后又自己new thread 去跑手柄控制.但是还是会发生cocos2d-x re ...

  5. android红外遥控器按键键值,红外遥控实验键值设置

    while(1) { key=Remote_Scan(); if(key) { LCD_ShowNum(86,130,key,3,16);                //显示键值 LCD_Show ...

  6. Android TV 遥控器切换主副屏

    private final List<CameraPreviewHolder> cameraPreviewHolderList = new ArrayList<>(2);cam ...

  7. android设计轮播功能按钮,Android TV HorizontalScrollView 图片轮播 遥控器上下按键的处理...

    当前位置:我的异常网» Android » Android TV HorizontalScrollView 图片轮播 遥控器 Android TV HorizontalScrollView 图片轮播 ...

  8. Android TV 悬浮球模拟物理按键

      最近在体验实习的时候做了一个TV的内存管家,其中有个要求是实现一个悬浮球,模拟TV控制器的按键,实现上下左右,back,menu,home等效果,并且做一个火箭升空的效果.这时候才发现网上有关tv ...

  9. 【Android TV 开发】焦点处理 ( 父容器与子组件焦点获取关系处理 | 不同电视设备上的兼容问题 | 触摸获取焦点 | 按键获取焦点 )

    Android TV 开发系列文章目录 [Android TV 开发]安卓电视调试 ( 开启网络远程调试 ) [Android TV 开发]焦点处理 ( 父容器与子组件焦点获取关系处理 | 不同电视设 ...

最新文章

  1. Spring IOC 组件概述
  2. SQL Server修改表结构后批量更新所有视图
  3. 减一天 日期函数_一文掌握excel中的日期函数
  4. Moblin MID开发学习笔记 - application launcher安装过程
  5. Apache Solr Velocity 注入远程命令执行漏洞复现 (CVE-2019-17558)
  6. 关于信贷业务中常用的模型说明
  7. Caffe学习:使用pycaffe读取caffemodel参数
  8. 大数据实战之路-数据仓库-项目运维交接文档
  9. UVa 11991 - Easy Problem from Rujia Liu?
  10. 最全最丰富的随机图片调用接口——三千之图
  11. 计算机函数countifs使用,countifs函数(countifs使用方法举例)
  12. 波及Win 11,让安全员自动放弃的零日漏洞,微软这次麻烦了
  13. 大数据如何助力“驯服”火灾?
  14. python websocket 断线自动重连
  15. python百科全书_维基百科中的数据科学:手把手教你用Python读懂全球最大百科全书...
  16. 记录调整CentOS的分区大小
  17. 避免踩踏悲剧|AI赋能城市应急,让智慧景区更安全
  18. 【好记性不如烂笔头】二叉树之利用先序中序还原树
  19. 以网游服务端的网络接入层设计为例,理解实时通信的技术挑战
  20. 职场初体验:入职6个月的数据科学家为你指路

热门文章

  1. [转]如何在数据绑定时不让combox控件触发SelectedIndexChanged事件
  2. sklearn高级功能
  3. ECMAScript 6 简介
  4. element Tooltip背景颜色样式修改
  5. css3的@supports
  6. 事件 passive 是什么?
  7. 手机自带计算机删了怎么恢复出厂设置,电脑的恢复出厂设置在哪里 如果是出厂设置肯定是删除所...
  8. linux添加汉字输入法
  9. 论“结婚生孩子要趁早”,否则真正的是“上有老下小”
  10. 量化交易系列【2】Pandas数据筛选及处理相关操作