Селектор для кнопок не работает после установки backgroundResource кнопки в Android - PullRequest
1 голос
/ 29 сентября 2010

Я применил следующий селектор ко всем моим кнопкам, указав его в моей теме:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/my_btn_pressed"
    android:state_pressed="true" />
<item android:drawable="@drawable/my_btn_focussed"
    android:state_focused="true" />     
<item android:drawable="@drawable/my_btn_normal" />
</selector>

Это отлично работает.Но я хочу, чтобы фон кнопки оставался «@ drawable / my_btn_pressed» при нажатии кнопки, как если бы он выделил, что это была последняя нажатая кнопка.Следовательно, я добавил код в свой onClick() для установки фонового ресурса:

infoButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            infoButton.setBackgroundResource(R.drawable.my_btn_pressed);
            otherButton.setBackgroundResource(R.drawable.my_btn_normal);
        }
    });

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

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

1 Ответ

0 голосов
/ 08 октября 2010

Хм, решение, которое я нашел для этого, может быть не совсем правильным, но я использовал этот обходной путь, поскольку у меня не было другого выхода!

Когда фокусируется кнопка информации, то есть в onFoucsChangeListener(),используйте infoButton.setSelected(true); и аналогичным образом установите все остальные кнопки как невыбранные.Не устанавливайте фоновый ресурс!

В selector.xml добавьте элемент

<item android:drawable="@drawable/my_btn_focussed" 
    android:state_focused="true" /> 

Это должно помочь в настройке выбранной кнопки как выделенной!

...