ハンドルとしてRadioButtonsを使用するカスタムのドラッグ可能なSlidingDrawerがあります。メソッドではreturn super.onInterceptTouchEvent(event);
なく呼び出したラジオボタンでタッチイベントを有効にするため。しかし、どういうわけか、SlidingDrawerをドラッグするたびに、RadioButtonを正確にタッチして上にドラッグすることはできません。指を少し上に動かして、SlidingDrawerを上にドラッグする必要があります。return true
onInterceptTouchEvent
RadioButton自体のTouchEventを失うことなく、RadioButtonにタッチすることで、SlidingDrawerを正確にドラッグ可能にする方法はありますか?
これが私のタッチ方法です:
public boolean onInterceptTouchEvent(MotionEvent event) {
if (mLocked) {
//return false;
}
final int action = event.getAction();
float x = event.getX();
float y = event.getY();
final Rect frame = mFrame;
final View handle = mHandle;
handle.getHitRect(frame);
if (!mTracking && !frame.contains((int) x, (int) y)) {
return false;
}
if (action == MotionEvent.ACTION_DOWN) {
mTracking = true;
WWHApplication.getListActivityIntance().resizeListView(1800);
handle.setPressed(true);
// Must be called before prepareTracking()
prepareContent();
// Must be called after prepareContent()
if (mOnDrawerScrollListener != null) {
mOnDrawerScrollListener.onScrollStarted();
}
if (mVertical) {
final int top = mHandle.getTop();
mTouchDelta = (int) y - top;
prepareTracking(top);
} else {
final int left = mHandle.getLeft();
mTouchDelta = (int) x - left;
prepareTracking(left);
}
mVelocityTracker.addMovement(event);
}
//return true;
return super.onInterceptTouchEvent(event);
}
これが私のハンドルの様子です
<LinearLayout
android:id="@+id/handle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_content_bg_top" />
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_content_bg"
android:fillViewport="true"
android:scrollbars="none" >
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/cb_tab_all"
android:layout_width="46dp"
android:layout_height="45dp"
android:background="@drawable/checkbox_background"
android:button="@drawable/tab_all_selector"
android:onClick="true" />
<RadioButton
android:id="@+id/cb_tab_favorites"
android:layout_width="84dp"
android:layout_height="45dp"
android:background="@drawable/checkbox_background"
android:button="@drawable/tab_favorites_selector"
android:onClick="true" />
<RadioButton
android:id="@+id/cb_tab_historical"
android:layout_width="134dp"
android:layout_height="45dp"
android:background="@drawable/checkbox_background"
android:button="@drawable/tab_historical_selector"
android:onClick="true" />
<RadioButton
android:id="@+id/cb_tab_food"
android:layout_width="116dp"
android:layout_height="45dp"
android:background="@drawable/checkbox_background"
android:button="@drawable/tab_food_selector"
android:onClick="true" />
</RadioGroup>
</HorizontalScrollView>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_content_bg_bottom" />
</LinearLayout>