我有线性布局的基本布局,ScrollView和ImageView。
ScrollView已注册onTouchListener和imageview onClicklistener。 如果我点击ImageView并且我退出了ImageView,我看不到带有" onclick"的日志。
如果我点击了imageView(在scrollView上)并且我正在某处,我会在"触摸"上看到日志。 当我退出时,如何在imageView上捕获onTouch事件?
以下是代码:
ImageView testButton = (ImageView) myView.findViewById(R.id.imageView1);
testButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(tag, "onclick");
}
});
ScrollView scrollView = (ScrollView) myView.findViewById(R.id.scrollView1);
scrollView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(tag, "ontouch");
return false;
}
});
这里是xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/com_facebook_blue"
android:scrollbarAlwaysDrawVerticalTrack="false" >
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/com_facebook_profile_picture_blank_square" />
</LinearLayout>
</ScrollView>
</LinearLayout>
答案 0 :(得分:0)
将此设置为滚动视图:
ScrollView mainScroll=(ScrollView) findViewById(R.id.your_scroll_view)
mainScroll.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
mainScroll.setFocusable(true); //If you need this
mainScroll.setFocusableInTouchMode(true); //If you need this
然后会触发您的imageView
onclick
听众。此代码也可能会严重影响您功能的其他部分。因此,请在执行此操作后检查视图,并在发生任何屏幕跳转时进行恢复。
答案 1 :(得分:0)
也将OnTouchListener
设置为ImageView
。当您从视图的可触摸区域拉开触摸时,它将触发Touch事件。取消ontouch(MotionEvent.ACTION_CANCEL
)时不会触发OnClick。您不应该使用onTouch()
因此在onTouch()