因此我试图在按下和释放时更改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);
}
有人可以告诉我为什么吗?
谢谢!
答案 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
事件将继续有效。
希望这有帮助!