在按下和释放时更改ImageButton的图像

Sae*_*ani 1 android xamarin.android

在Mono For Android中,我有一个ImageButton,我想在用户按住按钮时更改其图像.当用户释放按钮图像时,应更改为前一个图像.我正在尝试使用下面的代码,但没有任何反应:

    private void _goForward_KeyPress(object sender, View.KeyEventArgs e)
    {
        if(e.Event.Action == KeyEventActions.Down)
        {
            _goForward.SetImageResource(Resource.Drawable.arrowUpGreen);
             //Then do some stuff
        }
        else
        {
            _goForward.SetImageResource(Resource.Drawable.arrowUpRed);
            //Then do some stuff
        }
    }
Run Code Online (Sandbox Code Playgroud)

我不确定我是否正在使用正确的活动.在这种情况下,通常应该使用什么事件?

Nar*_*Pal 5

试试这个:

使用选择器

将其名称描述为:background_drawable.xml

<selector
    xmlns:android="http://schemas.android.com/apk/res/android">     
    <item       
        android:drawable="@drawable/YOUR_IMAGE_WHEN_PRESSED"
        android:state_pressed="true" />
    <item
        android:drawable="@drawable/YOUR_IMAGE_WHEN_FOCUSED"
        android:state_focused="true" />
    <item
        android:drawable="@drawable/YOUR_IMAGE_WHEN_NOT_ENABLED"
        android:state_enabled="false" 
        />
    <item
        android:drawable="@drawable/DEFAULT_IMAGE_WHICH_YOU_WANT_ALWAYS" />
</selector>
Run Code Online (Sandbox Code Playgroud)

在你的main.xml文件中

<ImageButton 
            android:background="@drawable/background_drawable"/>
Run Code Online (Sandbox Code Playgroud)

  • 这肯定是正确的答案.nick建议的选择器方法只会影响按钮的外观(即,按下按钮时更改按钮).然后,您需要为其他事件注册一个侦听器,并在代码中执行适当的操作(执行您的其他方法).当然这是最好的方法. (2认同)