1

Я создаю пользовательский вид, который можно по желанию кликать. Я хотел бы установить фон, который указывает состояние clickable. Обычно, я бы сделал это с XML Drawable реализованного что-то вроде этого:Есть ли доступное состояние для StateListDrawable?

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:color/white" android:state_enabled="false"/> 
    <item android:drawable="@drawable/background_white_grey_spinner_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/background_white_grey_spinner_normal"/> 
</selector> 

К сожалению, это не выглядит как есть более android:state_clickable или android:state_pressable атрибут. Это похоже на странный надзор, учитывая, что есть android:state_long_pressable. Я что-то упускаю?

+2

Это делается в макете: 'андроида: кликабельны = "верно | ложь"'. Не в самом себе. Для справки: http://developer.android.com/reference/android/view/View.html#attr_android:clickable –

+0

@Funkystein: Да, я установлю, будет ли просмотр кликабельным в макете, но я хочу указать является ли просмотр кликабельным с использованием фона. –

+0

Вы можете использовать 'state_enabled', чтобы установить другой цвет bg, когда он включен или отключен. Если включено, это означает, что можно щелкнуть, ** косвенно **. –

ответ

0

Вы должны объединить состояния для одного элемента:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@android:color/white" android:state_enabled="false"/> 
<item android:drawable="@drawable/background_white_grey_spinner_pressed" android:state_enabled="true" android:state_pressed="true"/> 
<item android:drawable="@drawable/background_white_grey_spinner_normal" android:state_enabled="true" android:state_pressed="false"/> 

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