从FrameLayout

时间:2016-04-13 09:37:03

标签: android textview imageview android-framelayout

我有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);

现在我想弄清楚的是 如何获取用户点击的任何单个视图?

2 个答案:

答案 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)