2016-09-22 1 views
1

Я планирую опубликовать игру на Android TV. Я разработал главный экран для игры, в котором есть несколько кнопок.Кнопка Android TV не показывает сфокусированную выделенную

Что мне нужно, чтобы иметь разные чертежи для каждого состояния кнопки. Мне нужно только три состояние:

  1. По умолчанию
  2. Специализировался
  3. прессованной

Для того, чтобы иметь различный вводимый коэффициент появляться в зависимости от различных состояний кнопки я создал следующий 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" 
    /> 

Проблема заключается в том, что приложения нагрузки, кнопка имеет значение по умолчанию значок состояния, когда я нажимаю на него, он отображает правильно нажатый, но он никогда не отображает сфокусированную вытачку, несмотря ни на что.

Я пробовал все. Я даже запросил программную программу, сфокусированная вытягиваемая не появится. Я проверил это поведение в эмуляторе и моем телевизоре Android Android без успеха.

Есть ли у вас какие-либо идеи о том, что мне здесь не хватает?

спасибо, что заблаговременно!

ответ

4

После многих часов проб и ошибок я нашел рабочее решение.

Новый файл селектор 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> 

В деятельности я вручную выбрать кнопку и запрос фокуса так:

Button quick_start = (Button) findViewById(R.id.start); 
    quick_start.setSelected(true); 
    quick_start.requestFocus(); 

Сейчас он работает отлично на моем AndroidTV и эмулятор.

Я надеюсь, что этот ответ сэкономит вам некоторое время, если вы столкнетесь с подобной проблемой!

Смежные вопросы