как изменить изображение ImageButton при нажатии и отпускании? - PullRequest
7 голосов
/ 30 июня 2011

Я хочу, чтобы в моем приложении для Android ImageButton меняло свое изображение при его нажатии и отпускании, а при повторном нажатии отпускается изображение для ImageButton, и как это сделать?

Ответы [ 3 ]

8 голосов
/ 30 июня 2011

создать селектор (это XML-файл), помещенный в папку для рисования. и в xml пять путей этого xml вместо реального изображения android:background="@drawable/imageselector" или в программе также вы можете получить то же самое, используя imageview.setBackgroundDrawable(R.drawable.imageselector)

Ниже мой селектор imageselector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_focused="true"
        android:state_pressed="false"
        android:drawable="@drawable/arow_selected" />
    <item
        android:state_focused="true"
        android:state_pressed="true"
        android:drawable="@drawable/arow_selected" />
    <item
        android:state_focused="false"
        android:state_pressed="true"
        android:drawable="@drawable/arow_selected" />
    <item
        android:drawable="@drawable/arow_unselect" />
</selector>
7 голосов
/ 30 июня 2011

используйте селектор для этого ... вот ссылка для этого .. http://developer.android.com/reference/android/widget/ImageButton.html

0 голосов
/ 27 сентября 2017

Вы можете использовать Image View для того же:

<ImageView
            android:id="@+id/iv1"
            android:src="@drawable/ic_new_delete0"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:visibility="visible" />

Код позади:

ImageView _iv1 = _activity.FindViewById<ImageView>(Resource.Id.iv1);

        _iv1.Touch += (object sender, View.TouchEventArgs e) => {
            if (e.Event.Action == MotionEventActions.Down)
            {
                _iv1.SetImageResource(Resource.Drawable.ic_new_delete);
                //Do the task when button is pressed
            }
            else if (e.Event.Action == MotionEventActions.Up)
            {
               _iv1.SetImageResource(Resource.Drawable.ic_new_delete0);
               //do the task when button is released
            }
        };
...