Android onClick-won';不要在ImageView上开火

Android onClick-won';不要在ImageView上开火,android,onclick,imageview,Android,Onclick,Imageview,我在应用程序中有3-4个活动,所有这些活动都有一些可以很好地工作的事件侦听器。 但是,仅在一个活动中,我无法使事件处理正常工作。 我尝试了此线程的解决方案: 这对我不起作用。我试图通过java代码手动设置ImageView的onClick侦听器,android:onClick from XML 似乎有其他组件处理所有事件,或者我的活动没有处理事件的权限。 我应该在AndroidMainfest.xml中为我的活动添加一些支持处理事件的内容吗 希望有人知道我应该尝试什么,下面是代码: 活动: pa

我在应用程序中有3-4个活动,所有这些活动都有一些可以很好地工作的事件侦听器。 但是,仅在一个活动中,我无法使事件处理正常工作。 我尝试了此线程的解决方案: 这对我不起作用。我试图通过java代码手动设置ImageView的onClick侦听器,android:onClick from XML

似乎有其他组件处理所有事件,或者我的活动没有处理事件的权限。 我应该在AndroidMainfest.xml中为我的活动添加一些支持处理事件的内容吗

希望有人知道我应该尝试什么,下面是代码:

活动:

package com.renegade.begining;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;

import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;


public class NotesOnStaff extends Activity{
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.notes_on_staff);


   /*     NoteView2 note=(NoteView2)findViewById(R.id.note_red);


        Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.note_red);
        note.setImage(bm);
     */   



    }


    public void onClickEventBtn1(View v) {
      // TODO Auto-generated method stub
       ImageView keyboard_letter=(ImageView)findViewById(R.id.keyboard_letters);
       keyboard_letter.setVisibility(View.INVISIBLE);
   }

    public void onClickEventBtn2(View v) {
      // TODO Auto-generated method stub
       ImageView keyboard_letter=(ImageView)findViewById(R.id.keyboard_letters);
       keyboard_letter.setVisibility(View.VISIBLE);
   }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
       switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:
         ImageView keyboard_letter=(ImageView)findViewById(R.id.keyboard_letters);
           keyboard_letter.setVisibility(View.VISIBLE);
         return true;
      case MotionEvent.ACTION_UP:
        return false; // something else
                default:
                        return false;// all others
      }
    }


}
布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/notes_on_staff_layout"
  android:background="@drawable/background_ver"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">


            <ImageView
              android:id="@+id/notes_keyboard"
           android:src="@drawable/keyboard"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:layout_alignParentBottom="true"
             android:layout_centerHorizontal="true"
           android:layout_marginBottom="20dip"   

         android:clickable="true" android:focusable="true"/>

      <ImageView
           android:id="@+id/btn_hide"
           android:src="@drawable/btnhide"
           android:layout_alignParentLeft="true"
           android:layout_marginTop="40dip"
           android:layout_marginLeft="10dip"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
            android:onClick="onClickEventBtn1"
         android:clickable="true" android:focusable="true"/>

      <ImageView 
         android:id="@+id/btn_show"
          android:layout_alignBottom="@id/btn_hide"
          android:layout_toRightOf="@id/btn_hide"
         android:src="@drawable/btnshow" 
         android:layout_height="wrap_content" 
         android:layout_width="wrap_content"
         android:onClick="onClickEventBtn2"
          android:clickable="true" android:focusable="true"/>   



      <ImageView

           android:id="@+id/staff"
           android:src="@drawable/staff"
           android:layout_below="@id/btn_hide"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:layout_centerHorizontal="true"
           android:layout_marginTop="0dip"
           android:layout_above="@id/notes_keyboard"


         />   


      <com.renegade.begining.NoteView2 
        android:id="@+id/note_red"
      android:layout_width="wrap_content"
       android:layout_height="wrap_content"


           />      


      <ImageView 
         android:id="@+id/keyboard_letters"
          android:layout_alignLeft="@+id/notes_keyboard"
          android:layout_alignBottom="@+id/notes_keyboard"
          android:layout_marginBottom="10dip"
          android:visibility="invisible"
         android:src="@drawable/keyboard_letters" 
         android:layout_height="wrap_content" 
         android:layout_width="wrap_content"
          android:clickable="true" android:focusable="true"/>   


</RelativeLayout>


您的EventListener正在吸收所有关闭的事件。试着让它返回
false
而不是true,这样子视图也有机会做出反应,因为我认为要正确触发
onClick
,子视图需要注册一个连续的DOWN然后是UP(仅仅向上一个按钮是不够的;考虑一下将手指从一个按钮上滑到另一个按钮上,然后松开;这两个按钮都不会触发,因为这表示用户想要取消。)

您的EventListener正在吸收所有关闭的事件。请尝试让它返回
false
而不是true,这样子视图也有机会做出反应,因为我认为要正确触发
onClick
,子视图需要注册一个连续的关闭,然后再注册一个向上(仅仅向上一个按钮是不够的;请考虑将手指从一个按钮滑到另一个按钮上,然后松开;这两个按钮都不会触发,因为这表示用户希望取消。)

Thx等待回复。我明白你的意思,但问题是我的活动根本没有注册点击和触摸事件。它从未进入onTouch()和onClick()函数(我在调试模式下检查了它)。我不需要Activity.onTouch()我只是想检查事件是否在那里得到处理。但事实并非如此。你的键盘字母视图是不可见的,但可以单击;它似乎有可能与按钮重叠并阻止它们的单击触发。尝试移除它和触摸事件处理程序,看看按钮是否触发?我唯一能做的其他事情是当然,NoteView2没有提供任何源代码,这可能是因为设置了不适当的可触摸区域,使其他视图无法获得焦点。(更一般地说,尝试从两个按钮和两个按钮单击侦听器的最小布局和活动开始,一次添加一个视图/方法,直到找到罪魁祸首).Thx再次感谢您的帮助。我将从头开始构建布局并在此处发布结果。我忘记发布结果。问题出现在自定义扩展视图NoteView2(您尽可能说明的问题)中,我为此调用了bringToFront()从XML膨胀时。在这种情况下,NoteView2覆盖了整个屏幕,并阻止了屏幕上其他视图的onClick事件。谢谢您的帮助!谢谢回复。我明白您的意思,但问题是我的活动根本没有注册点击和触摸事件。它从未进入onTouch()和onClick()函数(我在调试模式下检查了它)。我不需要Activity.onTouch()我只是想检查事件是否在那里得到处理。但事实并非如此。你的键盘字母视图是不可见的,但可以单击;它似乎有可能与按钮重叠并阻止它们的单击触发。尝试移除它和触摸事件处理程序,看看按钮是否触发?我唯一能做的其他事情是当然,NoteView2没有提供任何源代码,这可能是因为设置了不适当的可触摸区域,使其他视图无法获得焦点。(更一般地说,尝试从两个按钮和两个按钮单击侦听器的最小布局和活动开始,一次添加一个视图/方法,直到找到罪魁祸首).Thx再次感谢您的帮助。我将从头开始构建布局并在此处发布结果。我忘记发布结果。问题出现在自定义扩展视图NoteView2(您尽可能说明的问题)中,我为此调用了bringToFront()在这种情况下,NoteView2会覆盖整个屏幕,并阻止屏幕上其他视图的onClick事件。谢谢您的帮助!