Android - 在单击按钮并重新单击时在两个图像之间更改 ImageView
Android - Changing ImageView between two images on button click and reclick
所以我有一个 ImageView,它有一个特定的图像资源,比方说 image1
,当我单击图像时,我将它更改为另一个名为 image2
的图像资源,我想要的是可以将其改回 image1
等等。我尝试了以下方法,但它不起作用。
public void methodName(){
final ImageView imageNo1 = (ImageView) findViewById(R.id.imageID);
Drawable seatDrawable = imageNo1.getDrawable();
imageNo1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(imageNo1.getDrawable()==getResources().getDrawable(R.drawable.image1)){
imageNo1.setImageResource(R.drawable.image2);
} else {
imageNo1.setImageResource(R.drawable.image1);
}
}
});
}
我还尝试将布尔值 currentState
设置为 false 并在点击后的 if 语句中更改它,但这也不起作用。那么我该如何让它发挥作用呢?
我是这样使用的currentState
public void methodName(){
private boolean currentState = false;
final ImageView imageNo1= (ImageView) findViewById(R.id.imageID);
imageNo1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentState = false){
imageNo1.setImageResource(R.drawable.image2);
currentState = true;
} else if(currentState = true) {
imageNo1.setImageResource(R.drawable.image1);
}
}
});
}
解决方法:感谢dhaval提供setTag和getTag的解决方法
我试过这种方式,效果很好:
public void methodName(){
imgView = (ImageView) findViewById(R.id.imgView);
imgView.setTag(1);
imgView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(imgView.getTag() == 1){
imgView.setImageResource(R.drawable.abc_btn_rating_star_off_mtrl_alpha);
imgView.setTag(2);
}else{
imgView.setImageResource(R.drawable.abc_btn_rating_star_on_mtrl_alpha);
imgView.setTag(1);
}
}
});
}
只需在您的代码中使用 if/else:
public class MainActivity extends AppCompatActivity {
int a=0;
public void Here(View view){
if(a==0)
{
ImageView image1=(ImageView) findViewById(R.id.imageView);
image1.setImageResource(R.drawable.female);
a=1;
}
else
{
ImageView image2=(ImageView) findViewById(R.id.imageView);
image2.setImageResource(R.drawable.male);
a=0;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
所以我有一个 ImageView,它有一个特定的图像资源,比方说 image1
,当我单击图像时,我将它更改为另一个名为 image2
的图像资源,我想要的是可以将其改回 image1
等等。我尝试了以下方法,但它不起作用。
public void methodName(){
final ImageView imageNo1 = (ImageView) findViewById(R.id.imageID);
Drawable seatDrawable = imageNo1.getDrawable();
imageNo1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(imageNo1.getDrawable()==getResources().getDrawable(R.drawable.image1)){
imageNo1.setImageResource(R.drawable.image2);
} else {
imageNo1.setImageResource(R.drawable.image1);
}
}
});
}
我还尝试将布尔值 currentState
设置为 false 并在点击后的 if 语句中更改它,但这也不起作用。那么我该如何让它发挥作用呢?
我是这样使用的currentState
public void methodName(){
private boolean currentState = false;
final ImageView imageNo1= (ImageView) findViewById(R.id.imageID);
imageNo1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentState = false){
imageNo1.setImageResource(R.drawable.image2);
currentState = true;
} else if(currentState = true) {
imageNo1.setImageResource(R.drawable.image1);
}
}
});
}
解决方法:感谢dhaval提供setTag和getTag的解决方法
我试过这种方式,效果很好:
public void methodName(){
imgView = (ImageView) findViewById(R.id.imgView);
imgView.setTag(1);
imgView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(imgView.getTag() == 1){
imgView.setImageResource(R.drawable.abc_btn_rating_star_off_mtrl_alpha);
imgView.setTag(2);
}else{
imgView.setImageResource(R.drawable.abc_btn_rating_star_on_mtrl_alpha);
imgView.setTag(1);
}
}
});
}
只需在您的代码中使用 if/else:
public class MainActivity extends AppCompatActivity {
int a=0;
public void Here(View view){
if(a==0)
{
ImageView image1=(ImageView) findViewById(R.id.imageView);
image1.setImageResource(R.drawable.female);
a=1;
}
else
{
ImageView image2=(ImageView) findViewById(R.id.imageView);
image2.setImageResource(R.drawable.male);
a=0;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}