<tableRow androID:layout_height="150px"> <include androID:ID="@+ID/p1" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" layout="@layout/numerics_component" androID:onClick="onClick" /></tableRow><tableRow androID:layout_height="150px"> <include androID:ID="@+ID/p2" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" layout="@layout/numerics_component" androID:layout_below="@ID/p1" androID:onClick="onClick" /></tableRow>
……等
其中每个UI都是我重用的几个小部件和@R_419_6942@组件的集合.
我想在我的Activity中检测那些包含位中的组件的点击并进行适当的响应.问题是,在我的onClick方法中,如果我遵循常见模式,我永远无法分辨哪些视图得到了点击:
public voID onClick(VIEw vIEw) { Log.d(loggingname,"Got onClick event on vIEw: " + vIEw); // IDentify the vIEw,and handle appropriately: switch (vIEw.getID()) { ...
使用上面的代码,我永远无法分辨出组件的6个副本中的哪个被点击了.必须有一个很好的方法来做到这一点,但我没有看到它.
此外,我不想将可重用组件硬编码到一个活动,因为我想在我的应用程序中的多个活动中重复使用它.理想情况下,我可以在我的Activity中设置监听器.
有关如何做到这一点的任何想法?
谢谢!
解决方法 您可以搜索层次结构以确定单击了哪个子组件.我看到你表中的每一行都有一个唯一的ID.因此,即使使用相同的ID重复布局,视图层次结构也不会在任何子树中具有相同的ID.因此,要识别单击了哪个子组件,请获取父视图的ID(在您的情况下是一行),并查看该视图所属的6行中的哪一行.那有意义吗?
总结以上是内存溢出为你收集整理的android – 如何处理重复自定义组件的点击/触摸?全部内容,希望文章能够帮你解决android – 如何处理重复自定义组件的点击/触摸?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)