Как вызвать на FocusChange конкретную функцию всех кнопок в андроиде? - PullRequest
1 голос
/ 24 сентября 2010

Можно указать конкретную функцию, которая будет вызываться при нажатии кнопки, установив ее атрибут onClick в xml: android:onClick="function_name" Я хочу сделать нечто подобное для FocusChange кнопок, это возможно?

В частности, я хочу увеличить размер моей кнопки, когда она имеет фокусировку, и сделать ее нормальным размером, когда она не сфокусирована. Чтобы применить это ко всем моим кнопкам, я надеялся вызвать определенную функцию, которая делает это, а затем указать имя этой функции в моем style.xml. Но в Android нет атрибута onFocusChange.

Это работает, когда я добавляю переопределение onSetFocusChangeListener для каждой из моих кнопок отдельно в коде. Но есть ли другое решение?

Пожалуйста, помогите.

-Kiki

1 Ответ

1 голос
/ 24 сентября 2010

Обработка событий интерфейса пользователя, необходимых для реализации прослушивателей событий.

// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};

Вы можете использовать селектор элементов, чтобы указать состояния кнопки:

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