2013-07-25 3 views
0

Я пытаюсь обновить изображение кнопки при нажатии, однако метод, который я использую в своем XML-файле, похоже, не создает желаемый эффект (или любой вообще по этому вопросу)android: onClick = "@ drawable/... не обновляет кнопку onClick

XML-фрагмент:.

<Button 
     android:id="@+id/update_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/update_text" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="90dp" 
     android:background="@drawable/btn_update_inactive_hdpi" 
     android:onClick="@drawable/btn_update_active_hdpi"/> 
+0

Так .. Вы хотите вниз нажимается состояние и ООН нажимается право государства? – NightSkyCode

ответ

3

Чтобы изменить фон кнопки при нажатии, вам необходимо выбрать селектор.

btn_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/btn_update_active_hdpi" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/btn_update_inactive_hdpi"></item> 
</selector> 

В макете:

<Button 
    android:id="@+id/update_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/update_text" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="90dp" 
    android:background="@drawable/btn_selector"/> 
1

android:onClick вызывает метод Согласно документации:.

:

Name of the method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View. For instance, if you specify android:onClick="sayHello", you must declare a public void sayHello(View v) method of your context (typically, your Activity).

Итак, попробуйте вызвать функцию при нажатии кнопки и в вашем Java-коде и изменение программно в этой функции. Что-то вроде:

В файле XML:

android:onClick="changeBackground" 

В своем коде (активности, где вы установили вид этого XML-файла), объявить следующий dunction:

public void changeBackground(){ 
    Button button = (Button)findViewById(R.id.update_button); 
    button .setBackgroundResource(R.drawable.btn_update_active_hdpi); 
} 

PS: I убежище «Запустите код, но я надеюсь, что вы поймете, что я пытаюсь сказать. Надеюсь, что поможет

0

Вы можете использовать селектор, чтобы выполнить это. Создайте новый XML в вашей вытяжке папку и называем это что-то вроде «btn_background.xml» и добавить следующее:

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

    <item android:drawable="@drawable/btn_update_active_hdpi" android:state_selected="true"></item> 
    <item android:drawable="@drawable/btn_update_active_hdpi" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/btn_update_inactive_hdpi"></item> 

</selector> 

Затем установите фон вашего баттона

android:background="@drawable/btn_background" 

Свойство OnClick используется для присвоения метод в java-методе вашей активности на вашу кнопку. (Это в основном, как делает button.setOnClickListener().) Если вы хотите настроить слушателя OnClick, то вы можете сделать сделать следующее:

В XML

android:onClick="NameOfMethod" 

В Java активность

public void NameOfMethod(View v){ 
    //Do Click Stuff Here 
} 

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

  • Нет связанных вопросов^_^