为什么我的OnClick for ImageView无法正常工作?
我真的不知道为什么这不起作用,我一直试图通宵。ImageView
应该减去分数,当我点击它。我也尝试过记录它,但没有成功..可能是因为我的动画干扰了某种方式?为什么我的OnClick for ImageView无法正常工作?
这是我整个XML
<TextView
android:id="@+id/timer1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Test" />
<TextView
android:id="@+id/score1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Score:" />
<ImageView
android:id="@+id/imgview1"
android:layout_width="83dp"
android:layout_height="131dp"
android:clickable="true"
android:onClick="PeanutClick"
android:src="@drawable/lil_peanut"/>
这是我的源代码
public class GameView extends Activity implements OnClickListener {
MediaPlayer backgroundMusic;
TextView mTextField;
TextView mScoreField;
Point size = new Point();
Display display;
ImageView image;
int score = 0;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gameviewlayout);
int l;
mTextField = (TextView) findViewById(R.id.timer1);
mScoreField = (TextView) findViewById(R.id.score1);
image = (ImageView) findViewById(R.id.imgview1);
image.setOnClickListener(this);
TranslateAnimation moveLefttoRight = new TranslateAnimation(0, 200, 0,
0);
moveLefttoRight.setDuration(5000);
moveLefttoRight.setFillAfter(true);
moveLefttoRight.setRepeatCount(-1);
moveLefttoRight.setRepeatMode(Animation.REVERSE);
image.startAnimation(moveLefttoRight);
new CountDownTimer(45000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("Seconds Remaining: " + millisUntilFinished
/1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
display = getWindowManager().getDefaultDisplay();
display.getSize(size);
int width = size.x;
int height = size.y;
backgroundMusic = MediaPlayer
.create(GameView.this, R.raw.gallery_music);
backgroundMusic.start();
}
public void onClick(View v) {
if (v.getId() == R.id.imgview1)
Log.i("MB2", "Touchy touchy!");
PeanutClick();
}
public void PeanutClick() {
score = score - 100;
mScoreField.setText("Score: " + score);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
backgroundMusic.release();
}
编辑;发布的解决方案不起作用。我用我的整个XML和当前代码更新了代码。
我想通了,谢谢你的帮助。 onClick
一直在工作,但只在图像的原始位置。
<ImageView
android:id="@+id/imgview1"
android:layout_width="83dp"
android:layout_height="131dp"
android:clickable="true"
android:onClick="PeanutClick"
android:src="@drawable/lil_peanut"/>
有了这个XML,只有左上角是可点击的。我通过将android:layout_width="83dp"
更改为android:layout_width="fill_parent"
'layout_height'呢?这是否也必须改变? – 2014-03-17 18:13:54
如果您更改layout_height以填充父项,则整个屏幕水平和垂直均可点击。 – 2014-03-19 09:42:14
不适合我 – delive 2015-10-23 08:20:07
我不完全确定点击属性如何在XML上工作。但你可以做到这一点与沿着线的东西你的Java文件...
public class GameView extends Activity implements OnClickListener{
ImageView iv;
// whatever else
public void onCreate(...)
{
// ...
iv = (ImageView) findViewById(R.id.imageView1);
iv.setOnClickListener(this);
}
public void onClick(View v)
{
if (v.getId() == R.id.imageView1)
PeanutClick();
}
}
嗨cskoala。在实现这些功能之后,它仍然不会注册任何onclick事件...这是我的完整代码; http://paste2.org/mHBUg71v – 2013-04-24 09:25:05
aaaaaaaaaargh它驱使我坚果 – 2013-04-24 11:17:16
你得到它的工作已经是正确的? =] – 2013-04-24 20:58:34
public void PeanutClick(View view) { score = score - 100; mScoreField.setText("Score: " + score); }
公共方法应该在视图参数。
谢谢,这使它的工作,但只在图像的原始位置。但至少onclick正在工作,谢谢! – 2013-04-24 12:09:45
您在清单中定位了哪个API版本? – Grambot 2013-04-23 21:44:05
您的代码是否正在执行PeanutClick?如果你在第一行放置一个断点(score = -100),它会被击中吗? – RvdK 2013-04-23 21:50:44
gameviewLayout.xml是什么样的布局?这是偶然的框架布局吗?有一些布局的情况下,你的对象将被遮盖,而不是其领域的最前面的东西。有些人通过将布局中的对象(在这种情况下为您的ImageVew)进一步向下移动来解决问题,因此它会高于其他冲突项目。 – HalR 2013-04-24 00:39:25