如何在单击按钮时交换图像?

How can I swap images on button click?

本质上,ImageButton (InactiveButton) 所要做的就是在按下时切换到图像。我不知道从哪里开始,因为我是 Android Studio 的新手。

我试过使用选择器 class 但我不知道它应该完成什么。当我使用其他人的代码时,例如 public void buttonOnClick(View v),android studio 说它已被弃用?

XML布局:

<ImageButton
    android:id="@+id/InactiveButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/button_default" />

编辑 1:我添加了以下代码,但在第 52 行仍然有一个 "annotations are not allowed here" @override,而且 无法解析符号 v 第 53 行。

Picture of error

编辑 2:第 50 行的最终错误图片

Location of error

Actual Compiler Message

您可以这样更改图像:

ImageView someImageView= (ImageView) findViewById(R.id.some_image_view);
imageView.setImageResource(R.drawable.some_image);

在您的 onCreate 方法中 Activity

ImageButton inactiveButton = convertView.findViewById(R.id.InactiveButton);

现在,您可以参考您的 ImageView

然后,您需要定义单击它时要执行的操作。

    inactiveButton .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // put here the code when ImageView is clicked

            // to change the ImageView image  
            inactiveButton.setImageResource(R.drawable.otherimage);
        }
    });

就这些了。

费兰说的完全正确。

您需要以正确的方式实施它。

首先在 onCreate 方法之前定义您的图像视图,这样它将被视为全局变量,这样做的好处是您可以在同一 activity 中的任何地方使用它。 像 ImageButton inactiveButton;

其次,在onCreate方法中使用FindViewById找到它的视图。 像 inactiveButton = convertView.findViewById(R.id.InactiveButton);

接下来,您可以通过两种方式在inactiveButton上实现onClickListener: 1. 您可以使用 inactiveButton.setOnClickListener(this) 将 "implements View.OnClickListener" 实现到您的 activity;这将提示您对 activity 或片段实施 "android.view.View.OnClickListener"。实现此方法,这将添加 onClick 方法,您可以在此处编写代码来更改图像按钮中的图像

 @Override
    public void onClick(View v) {
          // add this, this will help you to implement multiple clicklisteners and you can add different methods in each click listener
        switch (v.getId())
        {
            case R.id.InactiveButton:
                 inactiveButton.setImageResource(R.drawable.otherimage);
                break;
            default:break;
        }
    }

  1. 可以直接写OnClickListener,需要在main方法中保留
     inactiveButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                       inactiveButton.setImageResource(R.drawable.otherimage); 
                    }
                });

希望这对您有所帮助。我知道我已经添加了很多信息,但我认为它会长期帮助你 运行。您可以检查图像以获得更清晰的图像,然后您可以轻松地了解您的缺陷。

问候 阿曼普利特