这令人抓狂。我有以下XML布局:
<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shadow" android:focusable="true" android:focusableInTouchMode="true">
<ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent">
<EditText android:id="@+id/reviews" style="@style/DescriptionArea" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:background="@null" />
<EditText android:id="@+id/notes" style="@style/DescriptionArea" android:hint="@string/detail_hint" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:maxLines="4"/>
</ViewFlipper>
</FrameLayout>
和Java:
viewFlipper = (ViewFlipper)findViewById(R.id.flipper);
slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
似乎如果我尝试在EditText区域上移动,手势就不会注册。但是,如果我将围绕它,即EditText的背景,它就可以工作了。我试过跟随fill_parent / wrap_content高度和宽度,但它似乎没有改变一件事。我已经证实了这种怀疑,我将EditText背景设置为“红色”,并注意到该红色矩形内的任何内容都无法激活。那我该怎么做呢?
答案 0 :(得分:5)
您可以覆盖activity的dispatchTouchEvent方法:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (gestureDetector != null) {
gestureDetector.onTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
显然,gestureDetector是您需要声明并初始化您的活动的成员变量。
答案 1 :(得分:1)
尝试对setLongClickable(true)
ViewFlipper