Android: укажите два разных изображения для переключателя с использованием XML

Я пытаюсь переопределить внешний вид ToggleButton по умолчанию. Вот XML, который определяет ToggleButton :

  

Теперь у нас есть два значка 30 x 30, которые мы хотим использовать для кликов / не нажатых состояний. Прямо сейчас у нас есть код, который программно меняет значок фона в зависимости от состояния:

 centeredOnLocation.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (centeredOnLocation.isChecked()) { centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on)); } else { centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me)); } } }); 

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

         

Но это не работает; чтение API ToggleButton ( http://developer.android.com/reference/android/widget/ToggleButton.html ), похоже, что только унаследованные атрибуты xml

  XML Attributes Attribute Name Related Method Description android:disabledAlpha The alpha to apply to the indicator when disabled. android:textOff The text for the button when it is not checked. android:textOn The text for the button when it is checked. 

Кажется, что нет атрибута android: state_checked, несмотря на class, имеющий метод isChecked() и setChecked() .

Итак, есть ли способ сделать то, что я хочу в XML, или я придерживаюсь своего грязного обходного пути?

One Solution collect form web for “Android: укажите два разных изображения для переключателя с использованием XML”

Ваш код в порядке. Однако кнопка переключения отображает первый элемент в вашем селекторе, который соответствует ему, поэтому значение по умолчанию должно быть последним. Организуйте пункты следующим образом, чтобы обеспечить их использование:

   //currently pressed turning the toggle on  //currently pressed turning the toggle off  //not pressed default checked state  //default non-pressed non-checked  
  • Как использовать UTF-8 в свойствах ресурсов с помощью ResourceBundle
  • Как передать строку из одной активности в другую?
  • Байт-массив и преобразование Int в Java
  • Как вызвать метод после задержки в Android
  • View's getWidth () и getHeight () возвращает 0
  • Что означает восклицательный знак на Java?
  • Есть ли способ получить количество меток чисел, используемых в файле jar
  • как проверить версию jdk, используемую для компиляции файла .class
  • Как сохранить текущую дату / время, когда я добавлю новое значение в базу данных Firebase Realtime
  • Преобразование String в массив int в java
  • Как я могу реализовать пользовательскую панель действий с пользовательскими кнопками в Android?
  • Interesting Posts

    Не удается удалить элемент «Не удалось найти этот элемент»

    В чем разница между символической связью, соединением, жесткой ссылкой и т. Д.?

    Как сделать отличный R воспроизводимый пример

    Что случилось с настройкой GRUB?

    Непризнанное сообщение SSL, соединение с открытым текстом? исключение

    Что же случилось с использованием GC.Collect ()?

    Видео HTML5: принудительное прерывание буферизации

    Вероятность столкновения при использовании 32-битного hashа

    Библиотека iOS для BitCode

    Как настроить Wildfly для обслуживания статического контента (например, изображений)?

    Запустить экранную заставку в тот момент, когда я блокирую компьютер в Win XP

    Остановите «Дин» при нажатии Enter

    Как установить PowerShell по умолчанию вместо cmd.exe

    Обновление и установка пакетов через командную строку Cygwin?

    У учетной записи root всегда есть UID / GID 0?

    Давайте будем гением компьютера.