我有FrameLayout,其中我实际添加了许多视图第一种类型的视图是ImageViews,第二种是TextViews。
// adding TextView
textview.setText(text);
textview.setTypeFace(typeface);
framelayout.addView(textview);
// adding ImageView
imageview.setImageDrawable(getResources().getDrawable(R.drawable.c10));
framelayout.addView(imageview);
现在我想弄清楚的是 如何获取用户点击的任何单个视图?
答案 0 :(得分:1)
一种方法是在将所有视图添加到FrameLayout之前,将具有功能的点击侦听器设置为单独的视图。
然而,预定义单个onClickListener可能会更好:
View.OnClickListener myListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
}
};
并将相同的视图设置为所有视图。在onClick中,有两种方法可以检测单击的视图:
1)如果您确定只有一个图像和一个文本视图,则可以在onClick(View v)中使用以下内容
if (v instanceof ImageView){
}else if(v instanceof TextView){
}
2)或者您可以将ID设置为视图,然后使用它:
switch (v.getId()) {
}
另外,不要忘记将id设置为每个视图,因为id是我们将运行switch case的内容。
注意:在API 17之上,你可以使用view.generateViewId()来获取id并保存它
希望这有帮助!
答案 1 :(得分:0)
您必须先为视图设置一个点击监听器,以便android将点击事件发送到您的应用。
类似
textview.setOnClickListener((new View.OnClickListener() {
@Override
public void onClick(View v) {
//response user click action
}
});
当用户点击textview
时,系统会调用onClick(View v)
。