从 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并保存

希望对您有所帮助!