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

时间:2019-06-05 01:01:48

标签: java android android-imagebutton

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

我尝试使用选择器类,但是我不知道它应该完成什么。当我使用其他代码(例如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行上仍然出现了“此处不允许使用注释” @override,并且在行上无法解析符号v 53.

Picture of error

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

Location of error

Actual Compiler Message

3 个答案:

答案 0 :(得分:0)

您可以这样更改图像:

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

答案 1 :(得分:0)

在您的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);
        }
    });

仅此而已。

答案 2 :(得分:0)

费兰所说的是完全正确的。

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

首先在onCreate方法之前定义图像视图,以便将其视为全局变量,这样做的好处是您可以在同一活动中的任何位置使用它。 喜欢 ImageButton inactiveButton;

其次,使用onCreate方法中的FindViewById查找其视图。 喜欢 inactiveButton = convertView.findViewById(R.id.InactiveButton);

接下来,您可以使用两种方法在inactiveButton上实现onClickListener: 1.您可以使用inactiveButton.setOnClickListener(this)来为活动实现“实现View.OnClickListener”;这将提示您为活动或片段实现“ 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;
        }
    }

first way

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

second way

希望这会对您有所帮助。我知道我已经添加了很多信息,但是从长远来看,它会为您提供帮助。您可以检查图像以获得更高的清晰度,然后可以轻松地掩盖缺陷。

问候 阿曼普雷特(Amanpreet)