【问题标题】:Get Single View From FrameLayout从 FrameLayout 获取单个视图
【发布时间】:2016-04-13 09:37:03
【问题描述】:

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

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

【问题讨论】:

  • 分享您的完整代码。

标签: android textview imageview android-framelayout


【解决方案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 并保存

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    你必须先给视图设置一个点击监听器,所以android会向你的应用发送点击事件。

    类似

        textview.setOnClickListener((new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //response user click action
            }
        });
    

    当用户点击textview时,这个onClick(View v)会被调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多