从 FrameLayout 获取单个视图
Get Single View From FrameLayout
我有 FrameLayout,我在其中添加了许多实用的视图,第一种视图是 ImageView,第二种是 TextView。
// adding TextView
textview.setText(text);
textview.setTypeFace(typeface);
framelayout.addView(textview);
// adding ImageView
imageview.setImageDrawable(getResources().getDrawable(R.drawable.c10));
framelayout.addView(imageview);
现在我想弄明白的是
如何获取用户点击的任何单个视图?
您必须先为视图设置点击侦听器,这样 android 会将点击事件发送到您的应用。
类似于
textview.setOnClickListener((new View.OnClickListener() {
@Override
public void onClick(View v) {
//response user click action
}
});
当用户单击 textview
时,将调用此 onClick(View v)
。
实现此目的的一种方法是在将所有视图添加到 FrameLayout 之前单独设置具有功能的点击侦听器。
然而,像这样预定义一个 onClickListener 可能会更好:
View.OnClickListener myListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
}
};
并为所有视图设置相同的视图。在 onClick 中,有两种方法可以检测点击了哪个视图:
1) 如果确定只有一张图片和一张文字view,可以在onClick(View v)
中使用如下
if (v instanceof ImageView){
}else if(v instanceof TextView){
}
2) 或者您可以为视图设置 id,然后使用它:
switch (v.getId()) {
}
此外,不要忘记为每个视图设置 ID,因为 ID 是我们将 运行 切换大小写的内容。
注:以上API17可以使用view.generateViewId()获取id并保存
希望对您有所帮助!
我有 FrameLayout,我在其中添加了许多实用的视图,第一种视图是 ImageView,第二种是 TextView。
// adding TextView
textview.setText(text);
textview.setTypeFace(typeface);
framelayout.addView(textview);
// adding ImageView
imageview.setImageDrawable(getResources().getDrawable(R.drawable.c10));
framelayout.addView(imageview);
现在我想弄明白的是 如何获取用户点击的任何单个视图?
您必须先为视图设置点击侦听器,这样 android 会将点击事件发送到您的应用。
类似于
textview.setOnClickListener((new View.OnClickListener() {
@Override
public void onClick(View v) {
//response user click action
}
});
当用户单击 textview
时,将调用此 onClick(View v)
。
实现此目的的一种方法是在将所有视图添加到 FrameLayout 之前单独设置具有功能的点击侦听器。
然而,像这样预定义一个 onClickListener 可能会更好:
View.OnClickListener myListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
}
};
并为所有视图设置相同的视图。在 onClick 中,有两种方法可以检测点击了哪个视图:
1) 如果确定只有一张图片和一张文字view,可以在onClick(View v)
中使用如下 if (v instanceof ImageView){
}else if(v instanceof TextView){
}
2) 或者您可以为视图设置 id,然后使用它:
switch (v.getId()) {
}
此外,不要忘记为每个视图设置 ID,因为 ID 是我们将 运行 切换大小写的内容。
注:以上API17可以使用view.generateViewId()获取id并保存
希望对您有所帮助!