我在应用程序中有3-4个活动,并且所有活动都有一些可以很好地运行的事件监听器。 但是,仅在一项活动中,我根本无法使事件处理工作。 我尝试了这个帖子的解决方案:http://www.anddev.org/view-layout-resource-problems-f27/ontouch-not-called-t16578.html 它对我不起作用。我试图从java代码手动为ImageViews设置OnClickListeners,从XML开始安装android:onClick。
似乎某些其他组件处理所有事件,或者我的活动没有处理事件的某些权限。 我应该在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>
答案 0 :(得分:4)
您的EventListener正在吸收所有DOWN事件。尝试让它返回false
而不是true,这样子视图也有机会做出反应,因为我认为onClick
正确触发子视图需要注册一个连续的DOWN然后UP(只是一个UP)是不够的;考虑将手指从一个按钮滑到另一个按钮然后释放;不要触发,因为这表示用户想要取消。)