红外遥控中,焦点移动到viewpager,没有被fragmet的textview控件得到焦点,
打印日志查看焦点
View rootView = getWindow().getDecorView();
View focusView = rootView.findFocus();
Logcat.i("focusView=" + focusView);
发现焦点一直在viewpager内的RecyclerView上,
focusView=androidx.viewpager2.widget.ViewPager2$RecyclerViewImpl{2f5d9ca VFED..... .F...... 0,0-1920,676 #1}
解决方法:清除viewpager的recyclerview的焦点
mBinding.viewpager.setAdapter(adapter);
for(int i=0;i<mBinding.viewpager.getChildCount();i++){
RecyclerView recyclerView = (RecyclerView) mBinding.viewpager.getChildAt(i);
recyclerView.clearFocus();
recyclerView.setFocusable(false);
}
再运行就发现控件可以获取到焦点了
focusView=androidx.appcompat.widget.AppCompatTextView{962c3dd VFED..... .F...... 260,444-460,504 #7f0a029a app:id/tv_install}
文章讲述了在使用红外遥控时,焦点从ViewPager切换至RecyclerView导致TextView无法获取焦点的问题。作者通过清除ViewPager中的RecyclerView焦点并设置其不可交互,解决了焦点重定向问题,使TextView恢复了焦点。
1万+

被折叠的 条评论
为什么被折叠?



