Android TV 焦点控制

Android TV 焦点控制

电视上都是通过控件获取焦点来实现点击效果的

	android:focusable="true"//布局文件中设置一个控件能否获得焦点
	android:setFocusableInTouchMode="true"//这个是触摸是否能获得焦点,因为有的TV要求遥控
	器和触摸都可以用,这时会用到
	android:focusedByDefault="true"//设置默认焦点 低版本用不了,不过可以用requestFocus()强制获取焦点 这个属性只能在API 26 或者更高版本中使用,如果你的最低版本低于26则会报错
	android:defaultFocusHighlightEnabled="true"//原生控件获取焦点高亮显示 这个属性也能在API 26 或者更高版本中使用,如果你的最低版本低于26则会报错

意思就是可以获取到焦点,为false则不可获取焦点,
在代码里

	btnTest.setFocusable(true);//代码中设置一个控件能否获得焦点
	btnTest.setFocusableInTouchMode(true);//这个是触摸是否能获得焦点,因为有的TV要求遥控器和触摸都可以用,这时会用到
	btnTest.setFocusedByDefault(true);//设置默认焦点 低版本用不了,不过可以用requestFocus()强制获取焦点 这个属性只能在API 26 或者更高版本中使用,如果你的最低版本低于26则会报错
	btnTest.setDefaultFocusHighlightEnabled(true);//原生控件获取焦点高亮显示 这个属性也能在API 26 或者更高版本中使用,如果你的最低版本低于26则会报错

为false则不可获取焦点。
在已知控件ID的情况下我们可以设置上下左右的移动控件,

	android:nextFocusUp="@id/tv_test"//当按上键时,下一个获得焦点的控件为tv_test
    android:nextFocusDown="@id/tv_test"//当按下键时,下一个获得焦点的控件为tv_test
    android:nextFocusLeft="@id/tv_test"//当按左键时,下一个获得焦点的控件为tv_test
    android:nextFocusRight="@id/tv_test"//当按右键时,下一个获得焦点的控件为tv_test

代码中:

	btnTest.setNextFocusUpId(R.id.tv_test);//当按上键时,下一个获得焦点的控件为tv_test
    btnTest.setNextFocusDownId(R.id.tv_test);//当按下键时,下一个获得焦点的控件为tv_test
    btnTest.setNextFocusLeftId(R.id.tv_test);//当按左键时,下一个获得焦点的控件为tv_test
    btnTest.setNextFocusRightId(R.id.tv_test);//当按右键时,下一个获得焦点的控件为tv_test
	btnTest.requestFocus()//强制设置一个焦点到指定的view或它的一个子类,(前提是
发布了31 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38436214/article/details/104768374