ユーザーがアイテムを長押しした後、アイテムの横に追加の編集オプションを表示しListFragement
たい。
これは、カスタムArrayAdapter
(内部getView
)で次のコードを使用すると正常に機能します。
rowView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
//Show the edit controls
View editArea = rowView.findViewById(R.id.editArea);
editArea.setVisibility(View.VISIBLE);
//Don't raise additional events for this touch
return true;
}
});
ただし、私の問題は、これらの追加の編集コントロールを非表示にするためにどのイベントを使用するかです。
理想的には、編集コントロールが表示されているときは、それらの外側のタッチを無視して、それらを非表示にする必要があります(ダイアログを開いて、ユーザーがそれ以外の場所をクリックしたときのように)。
dispatchTouchEvent
MainActivityで上書きしようとしましたが、通常すべてのACTION_DOWN
イベントをインターセプトすると、クリックがディスパッチされる前に編集コントロールが非表示になります(もちろん)。
イベントをディスパッチせずに、ユーザーがどのコントロールに触れたかを検出する可能性はありますか?
すべてをインターセプトするACTION_UP
と、ユーザーがロングクリックを終了すると編集コントロールが削除されます。ACTION_UP
そして、私は特定のものがロングタッチに属するかどうかを避けようとしています。これは本当に厄介なコードを生成するからです。
どのイベントを聞くべきかアイデアはありますか?
それとも、私の目標を達成するためのより良い代替方法を知っていますか?