SlidingDrawerハンドルにボタンを追加し、ハンドルを押した/ドラッグしたときにユーザーが標準のSlidingDrawerビヘイビアを維持したままボタンを操作するようにしたいと思っていますか?
私はちょうど同様の問題を解決しました。そのような
私のハンドルを探していた何かが:
これは、2つのボタンと(標準SlidingDrawerハンドルとして反応)本当のハンドルになります中央のTextViewで構成されます。
public boolean onInterceptTouchEvent(MotionEvent event) {
//...
final Rect frame = mFrame;
final View handle = mHandle;
// original behaviour
//mHandle.getDrawingRect(frame);
// New code
View trackHandle = mTrackHandle;
// set the rect frame to the mTrackHandle view borders instead of the hole handle view
// getParent() => The right and left are valid, but we need to get the parent top and bottom to have absolute values (in screen)
frame.set(trackHandle.getLeft(), ((ViewGroup) trackHandle.getParent()).getTop(), trackHandle.getRight(), ((ViewGroup) trackHandle.getParent()).getBottom());
if (!mTracking && !frame.contains((int) x, (int) y)) {
return false;
}
//...
}
:
は、私は、標準SlidingDrawer.javaクラスのonInterceptTouchEvent方法でソースコードのビットを変更し、ボタンが(アンドロイドコードソースからソースファイルをコピー&ペースト)独立SlidingDrawerの動作させるために
私はまた、活動の作成時に、使用する本物のhanlde設定するmTrackHandle属性のセッターを追加しました:あなたは二つのボタンの上の標準的なリスナーを設定することができた後
protected void onCreate(Bundle savedInstanceState) {
//...
mSlidingDrawer.setTrackHandle((View) findViewById(R.id.menu_handle_TextView_Title));
//...
}
を。彼らは魅力的に働くでしょう。
を助けることができるかもしれません。 基本クラスを拡張し、必要なメソッドをオーバーライドする可能性はありますか? –
ここでsetTrackHandleは何ですか? –
これは、Android [SlidingDrawer](http://developer.android.com/reference/android/widget/SlidingDrawer.html)に追加してTrackHandleを設定できる方法です。デフォルトではgetHandle()メソッドしかありません。これを追加するには、SlidingDrawerクラスをサブクラス化してメソッドを追加する必要があります。 –