如何在单击按钮时交换图像?
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;
}
}
- 可以直接写OnClickListener,需要在main方法中保留
inactiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
inactiveButton.setImageResource(R.drawable.otherimage);
}
});
希望这对您有所帮助。我知道我已经添加了很多信息,但我认为它会长期帮助你 运行。您可以检查图像以获得更清晰的图像,然后您可以轻松地了解您的缺陷。
问候
阿曼普利特
本质上,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;
}
}
- 可以直接写OnClickListener,需要在main方法中保留
inactiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
inactiveButton.setImageResource(R.drawable.otherimage);
}
});
希望这对您有所帮助。我知道我已经添加了很多信息,但我认为它会长期帮助你 运行。您可以检查图像以获得更清晰的图像,然后您可以轻松地了解您的缺陷。
问候 阿曼普利特