Android TV 按钮不显示焦点可绘制对象
Posted
技术标签:
【中文标题】Android TV 按钮不显示焦点可绘制对象【英文标题】:Android TV button does not show focused drawable 【发布时间】:2017-01-30 18:49:18 【问题描述】:我计划在 android TV 上发布游戏。我已经开发了包含一些按钮的游戏主屏幕。
我需要为每个按钮状态设置不同的可绘制对象。我只需要三个状态:
-
默认
专注
按下
为了根据不同的按钮状态显示不同的drawable,我创建了以下.xml文件:
buttonquickgame.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/greenbutton_focused" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/greenbutton_focused" /> <!-- focused -->
<item android:drawable="@drawable/greenbutton" /> <!-- default -->
</selector>
我已将此 xml 文件放在 res/drawable 文件夹中。我完全按照谷歌在这里的建议:https://developer.android.com/training/tv/start/navigation.html
然后我将按钮的背景设置为之前的 .xml 文件,如下所示:
<Button
android:id="@+id/start"
android:layout_
android:layout_
android:layout_marginTop="20dip"
android:background="@drawable/buttonquickgame"
android:onClick="OnClickButton"
/>
问题是应用程序加载,按钮具有默认状态图标,当我按下它时,它会正确显示按下的drawable,但无论如何它都不会显示聚焦的drawable。
我什么都试过了。我什至以编程方式请求焦点,焦点可绘制不会出现。我在模拟器和我的 Sony Android TV 中检查了这种行为,但没有成功。
您对我在这里缺少什么有任何想法吗?
非常感谢您!
【问题讨论】:
【参考方案1】:经过数小时的反复试验,我找到了可行的解决方案。
新的选择器xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/orangebutton_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/orangebutton_focused" /> <!-- focused -->
<item android:drawable="@drawable/orangebutton" /> <!-- default -->
<item android:drawable="@drawable/orangebutton_focused" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>
</selector>
在 Activity 中,我手动选择按钮并请求焦点,如下所示:
Button quick_start = (Button) findViewById(R.id.start);
quick_start.setSelected(true);
quick_start.requestFocus();
现在它在我的 AndroidTV 和模拟器上运行良好。
如果您遇到类似问题,我希望这个答案可以为您节省一些时间!
【讨论】:
以上是关于Android TV 按钮不显示焦点可绘制对象的主要内容,如果未能解决你的问题,请参考以下文章
FAB 按钮未在 android studio 布局编辑器中正确显示可绘制对象