按下并释放时Xamarin.Android更改ImageButton,(按钮单击不再工作时出现错误)

时间:2017-05-24 00:43:01

标签: c# xamarin xamarin.android

因此我试图在按下和释放时更改imageButton的图像,它可以工作。但是在实现代码后,Button.Click函数不再执行/触发,这里是我的代码

    ImageButton btnNewGame;

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);
        btnNewGame = FindViewById<ImageButton>(Resource.Id.btnNewGame);

        btnNewGame.Click += BtnNewGame_Click;

        btnNewGame.Touch += (object sender, View.TouchEventArgs e) =>
        {
            if (e.Event.Action == MotionEventActions.Down)
            {
                btnNewGame.SetImageResource(Resource.Drawable.Button_New_Game_Pressed);
            }
            else if (e.Event.Action == MotionEventActions.Up)
            {
                btnNewGame.SetImageResource(Android.Resource.Drawable.IcMenuGallery);

            }
        };

    private void BtnNewGame_Click(object sender, EventArgs e)
    {
        Intent nextActivity = new Intent(this, typeof(NextPage));
        StartActivity(nextActivity);
    }

有人可以告诉我为什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用选择器完成此操作。

在Drawables目录中创建一个XML文件。

<强> imagebutton_selector.xml

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

在此文件中,您可以选择对象的不同状态,例如ImageButton

我定义了4个不同的状态,你可以定义你需要的状态,每个状态都有不同的drawable,为简单起见,我使用了相同的drawable 3状态(禁用,启用和启用+聚焦)和压缩使用了第二个drawable

现在转到定义ImageButton的Layout,并将其设置为背景

<ImageButton
    android:id="@+id/btnNewGame"
    android:background="@drawable/imagebutton_selector"
    android:layout_width="80dp"
    android:layout_height="80dp" />

有了这个,您可以自由删除代码上的OnTouch实现,Click事件将继续有效。

希望这有帮助!