2013-06-19 2 views
0

Я хочу изменить, например. btn_star_big_off to btn_star_big_onchange Image Button Системный ресурс при нажатии

Каждый раз, когда кто-то нажимает кнопку, состояние этого должно измениться. Toogle был бы идеальным, но я не знаю, как его сочетать. И я не знаю, как изменить состояние кнопки. Я узнал, что могу сделать это с помощью извлекаемого XML-файла, но там у меня есть только доступ к импортированным изображениям, но не к системным ресурсам?

Кнопка:

<ImageButton 
       android:id="@+id/imageButton4" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:src="@android:drawable/btn_star_big_off" /> 

А вот суд из моего вытяжке XML:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/button" android:state_pressed="true"/> 
<!-- pressed --> 
    <item android:drawable="@drawable/button"/> 
<!-- default --> 

</selector> 
+0

Пытаться изменить образ OnClick событие программно из ваших Посмотреть. – AndiM

ответ

3

Вы должны использовать ToggleButton

1) В макете реализации ToggleButton

<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:weightSum="1"> 

    <ToggleButton 
    android:layout_width=0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight=".3" 
    android:background="@drawable/my_button" 
    android:text="" 
    android:textOff="" 
    android:textOn=""/> 

</TableRow> 

2) макет Создание XML в вытяжке каталоге (здесь my_button.xml)

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:drawable/btn_star_big_on" android:state_pressed="true"/><!-- pressed --> 
    <item android:drawable="@android:drawable/btn_star_big_on" android:state_focused="true"/><!-- focused --> 
    <item android:drawable="@android:drawable/btn_star_big_on" android:state_checked="true"/> 
    <item android:drawable="@android:drawable/btn_star_big_off" android:state_checked="false"/> 
    <item android:drawable="@android:drawable/btn_star_big_off"/> <!-- default --> 
</selector> 

здесь я добавляю другое состояние, если вы хотите иметь сфокусированного IMG

+0

Спасибо! Это очень помогло, но проблемы все еще есть. Когда я это сделаю, я получаю сообщение об ошибке: Ошибка : Ошибка: ресурс не найден, который соответствует указанному имени (в 'drawable' со значением '@ drawable/btn_star_big_off'). Поскольку я не сохранил изображения на своем компьютере, они из android (из системного ресурса). Как я могу ответить на изображения системных ресурсов? –

+1

без проблем! мой код был отредактирован. если его хорошо для вас нажмите вверх :) – baroni

+0

wow большое спасибо !! теперь это выглядит так просто! –