我有一个包含大量图像的布局。我必须做的是当一个图像被点击时,我必须显示它的细节。但我不想让所有图像都有onClickListeners。我怎样才能做到这一点?检测点击父母的哪个孩子点击
回答
您不必为所有图像使用不同的处理程序。对所有图像使用一个处理程序。这将使你的代码更加清洁,易于管理并解决你的问题。
public void onCreate(Bundle bundle) {
//...
OnClickListener mHandler = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.img1:
//..
break;
case R.id.img2:
//....
break;
}
}
};
ImageButton btn1 = (ImageButton)findViewById(R.id.img1);
ImageButton btn2 = (ImageButton)findViewById(R.id.img2);
//...
btn1.SetOnClickListener(mHandler);
btn2.SetOnClickListener(mHandler);
//...
}
一个Listener
来统治它们。
在物体上实现
onClick()
,其注册为监听器在
onClick()
,检查作为参数传递的View
对象,以确定该图像的被单击。你可以做任何事情从getId()
到铸造它(ImageView)
并获得实际的图像。一旦你知道哪个图像被点击了,你会用它做什么。
在对象上实现onClick(),将其注册为侦听器 - 你的意思是实现OnClickListener接口并重写onClick()方法吗? –
确实。然后调用'setOnClickListener' – slezica
好的..谢谢:) –
如果你正在寻找实现一个ImageView
(或其他)定制行为,然后有一个类型的视图的多个实例,你应该继承的ImageView
,把你的听众在那里。然后你会得到一个封装的View
,它实现了你想要的自定义行为,如果你以后决定要多或少需要或者将它们放在另一个地方,那么很容易移动View
及其行为而不会撕裂你的Activity
。
- 1. jQuery的 - 点击父母从孩子
- 2. 在点击父母影响孩子也
- 3. JS addeventlistener点击父母不是孩子
- 4. 防止点击孩子发射父母点击事件
- 5. 如何防止孩子点击父母点击
- 6. jquery,在父母点击检查子女
- 7. 检测哪个子元素被点击
- 8. jquery点击检测目标孩子
- 9. 在按钮上添加一个孩子到父母点击Xamarin.forms
- 10. slideToggle:通过点击一个孩子链接隐藏父母
- 11. 点击父,忽视它的孩子
- 12. Angular 2 - 当点击父元素时防止点击孩子?
- 13. 当孩子被点击时触发父级点击事件
- 14. Angular2 - 切换父母和孩子的风格点击
- 15. 父母和孩子视图的点击事件
- 16. jQuery的孩子激活父母点击事件
- 17. jQuery的孩子是捕捉点击,只希望父母
- 18. 我如何找到父母点击孩子的索引
- 19. 当用jQuery点击父母时更改孩子的班级
- 20. Expandablelistview点击孩子
- 21. 扩大父李点击孩子UL
- 22. 父母和子女的点击事件
- 23. 子div点击事件触发父母点击事件
- 24. jQuery的单击事件的父母,但要找到孩子(点击)元素
- 25. 父母/孩子点击事件处理(香草JS)
- 26. 对父母点击触发事件但不对孩子触发
- 27. 是否有可能检查哪个“孩子” DIV被点击
- 28. jQuery检测哪个id被点击
- 29. 检测点击了哪个CCSprite
- 30. JQuery - 检测哪个div框被点击
谢谢你的回答..你在你的代码中提到的OnClickHandler类是你自己的类,因为我找不到它。如果是这样,它继承了哪个类? –
它在View.OnClickListener中。而且它是一个接口。如果你想要,你可以在你的类中实现接口,然后调用'btn.SetOnClickListener(this);' –
对不起,那是我的错。我把它拼写成“OnClickHandler”。这当然是'OnClickListener'。直到现在我还没有注意到它。 –