我的活动中有一个明星形象。现在,当用户点击该星形图像时,该图像应更改为 ON星形图像,与最喜欢的星形图像相同。为此,我使用以下代码:
ImageView star=(ImageView)findViewById(R.id.favorite);
star.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
star.setImageResource(android.R.drawable.star_big_on);
}
return false;
}
});
但我无法改变那张照片。请建议我。
答案 0 :(得分:1)
使用OnClickListener而不是OnTouchListener。
ImageView star=(ImageView)findViewById(R.id.favorite);
star.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
star.setImageResource(android.R.drawable.star_big_on);
}
});
您的代码应该是这样的。您还需要使用XML(android:clickable =" true")或代码(star.setClickable(true);)中的ImageView可点击。
相反,您可以使用ImageButton并将图像设置为ImageButton的背景。这样您就不必担心将视图设置为可点击,因为它本身就是可点击的。
答案 1 :(得分:0)
要更改图像,您可以使用以下代码:
star.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
star.setImageResource(android.R.drawable.star_big_on);
}
});
答案 2 :(得分:0)
你可以使用selctor xml。在res / drawable下创建xml,然后创建selector_star.xml,你在xml中的代码应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/star_big_on" android:state_pressed="true" android:state_selected="true"></item>
<item android:drawable="@drawable/star_big_off"></item>
</selector>
在你的Image视图xml中,它应该是这样的:
<ImageView
android:id="@+id/star"
android:background="@drawable/star_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>