按下和释放ImageButton时如何更改其图像?

7

我希望在我的安卓应用中,当ImageButton被按下和释放时,它的图片会改变,再次按下并释放时,ImageButton的图片将会改回来,如何实现呢?

3个回答

8

创建一个选择器(它是一个xml文件),将其放入drawable文件夹中。在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

0
你可以使用ImageView来实现相同的效果:
<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
            }
        };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接