Программная кнопка Android в Java (не XML) - PullRequest
10 голосов
/ 07 декабря 2011

Как определить изображение кнопки Android для «state_pressed» «android: state_focused» в Java?

Например, как можно выполнить эквивалент в Java для XML из

http://developer.android.com/reference/android/widget/ImageButton.html

 <?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/button_pressed" /> <!-- pressed -->
     <item android:state_focused="true"
           android:drawable="@drawable/button_focused" /> <!-- focused -->
     <item android:drawable="@drawable/button_normal" /> <!-- default -->
 </selector>

Ответы [ 3 ]

13 голосов
/ 07 декабря 2011

Просто используйте метод addState для StateListDrawable

StateListDrawable stateListDrawable = new StateListDrawable();
stateListDrawable.addState(new int[] {android.R.attr.state_pressed}, 
      getResources().getDrawable(R.drawable.phone));

Вы можете использовать следующие константы для первого параметра этого метода

android.R.attr.state_accelerated
android.R.attr.state_activated
android.R.attr.state_active
android.R.attr.state_drag_can_accept
android.R.attr.state_drag_hovered
android.R.attr.state_enabled
android.R.attr.state_first
android.R.attr.state_focused
android.R.attr.state_hovered
android.R.attr.state_last
android.R.attr.state_middle
android.R.attr.state_pressed
android.R.attr.state_selected
android.R.attr.state_single
android.R.attr.state_window_focused
4 голосов
/ 07 декабря 2011

Создайте экземпляр StateListDrawable и назначьте его с imagebutton.setImageDrawable(stateDrawable).

1 голос
/ 12 февраля 2016

10x к Тэнг Ке, я использую это для другого цвета элемента списка с цветом выбора.

выбранное состояние

stateListDrawable.addState(new int[] {android.R.attr.state_pressed}, 
  new ColorDrawable(getResources().getColor(R.color.alpha_blue500)));

состояние по умолчанию

stateListDrawable.addState(new int[] {}, 
  new ColorDrawable(getResources().getColor(R.color.red)));

Здесь вы можете изменить цвет для разных состояний элемента строки (например, платный или бесплатный)

установить состояние элемента строки пользовательского макета в адаптере списка

holder.relativeLayout.setBackgroundDrawable(stateListDrawable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...