【问题标题】:Android - ImageView On ClickAndroid - 点击时的 ImageView
【发布时间】:2020-01-07 00:00:46
【问题描述】:

当我的图像视图被点击时,我试图跟踪一次点击,但我似乎无法接受触摸,有什么想法吗?

imgView.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v) {
        Log.v(TAG, " click");
    }
});

【问题讨论】:

    标签: android touch


    【解决方案1】:

    图片通常是不可点击的,所以我建议你把定义放上去

    android:clickable="true"
    android:focusable="true"
    

    在你的 layout.xml 到 imageView。

    如果这没有帮助,请编辑+更新您的问题并向我们展示您的布局部分,您在其中定义图像以查看它。

    编辑: 试过了,你的代码也和我一起工作——即使是大写的 id 名称。 你能仔细看看你的 LogCat 吗? 只要我不再选择设备,我的有时并不会真正更新。

    要在 Eclipse 中执行此操作,请转到“设备”视图(或首先通过“窗口”显示它)并在您的设备/虚拟设备上单击一次。

    如果您在 LogCat-View 中仍未找到您的日志条目,请尝试创建一个过滤器(通过绿色加号并将您使用 TAG 定义为“按日志标签”的字符串给它)。

    在“使用 LogCat”部分查看 android developers > Using DDMS

    【讨论】:

    • 我完全可以使用建议的代码,而无需设置android:clickable
    • setonclicklistener 使视图可点击,如果它没有默认设置。
    • 很高兴知道。猜我很困惑 - 如果你想使用 android:onClick 并在那里有一个方法的链接,你需要它。那么我希望我们能得到关于我答案第二部分的更新。
    • @Machado 好点。当我第一次给出这个答案时,这个属性并不存在。现在添加它以防其他人遇到此帖子
    【解决方案2】:

    您忘记覆盖 onClick 方法。这对我有用,也应该对你有用:-)

    imgView.setOnClickListener(new View.OnClickListener() {
       //@Override
       public void onClick(View v) {
          Log.v(TAG, " click");         
       }        
    });
    

    这里是获取 X 和 Y 坐标:

    imgView.setOnTouchListener(new OnTouchListener() { 
       @Override
       public boolean onTouch(View v, MotionEvent event) {
          // X = event.getX()
          // Y = event.getY()
          return false;
       }            
    });
    

    【讨论】:

    • “注释类型用于标记覆盖超类中方法声明的方法。如果使用 @Override 注释的方法实际上没有覆盖超类中的方法,编译器会产生错误。”来源:developer.android.com/reference/java/lang/Override.html
    • 我收到错误:new View.OnClickListener(){} 类型的方法 onClick(View) 必须覆盖超类方法
    • 能否请您发布您的整个代码,或者至少发布与 ImageView 相关的所有内容?
    • 受保护的 void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);设置内容视图(R.layout.main); img=(ImageView)findViewById(R.id.ImageView01); // 位图 bmp = BitmapFactory.decodeResource(getResources(), R.drawable.refresh); img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.v(TAG, "click"); } });
    • @Override 注解不只是一个可以但不需要使用的标记吗?无论如何都会发生覆盖 - 无论它是否存在。
    【解决方案3】:

    1) 首先通过添加-> android:clickable="true" 使您的图像视图可点击。
    2)然后转到您的java文件并添加声明一个变量 例如-> 私有静态 ImageView imgview;
    3)然后添加这个功能:

    public void OnclickButtonListener() {
    
        imgview =  findViewById(R.id.imageView3);
    
        imgview.setOnClickListener(new View.OnClickListener() {
                                          @Override
                                          public void onClick(View v) {
                                              Intent intent=new Intent(timetable.this,MapsActivity.class);
                                              startActivity(intent);
                                          }
        });
    }
    

    并在构造函数中调用此函数。 希望这会奏效。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      相关资源
      最近更新 更多