Android TV按钮未显示焦点图标。

3
我计划在Android TV上发布一款游戏。我已经为游戏开发了主屏幕,其中包含一些按钮。
我需要的是每个按钮状态有不同的drawable图像。我只需要三种状态:
1. 默认 2. 聚焦 3. 按下
为了根据不同的按钮状态显示不同的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文件夹中。我完全按照Google在这里建议的步骤操作:https://developer.android.com/training/tv/start/navigation.html
然后,我将按钮的背景设置为以前的.xml文件,如下所示:
<Button
    android:id="@+id/start"
    android:layout_width="250.0dip"
    android:layout_height="60.0dip"
    android:layout_marginTop="20dip"
    android:background="@drawable/buttonquickgame"
    android:onClick="OnClickButton"
    />

问题是应用程序加载后,按钮具有默认状态图标,当我按下它时,它正确地显示了按下的可绘制对象,但无论如何都不会显示焦点可绘制对象。
我已经尝试了一切。我甚至以编程方式请求焦点,但焦点可绘制对象仍然不会出现。我在模拟器和我的Sony Android电视上检查了这种行为,但都没有成功。
您有任何想法吗?我在这里漏掉了什么吗?
非常感谢您的帮助!
1个回答

8

经过多次尝试和错误,我找到了一个可行的解决方案。

新的选择器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和模拟器上都能正常工作。

我希望这个答案能为您节省一些时间,如果您面临类似的问题!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接