2

ユーザーがアイテムを長押しした後、アイテムの横に追加の編集オプションを表示し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;
    }
});

ただし、私の問題は、これらの追加の編集コントロールを非表示にするためにどのイベントを使用するかです。

理想的には、編集コントロールが表示されているときは、それらの外側のタッチを無視して、それらを非表示にする必要があります(ダイアログを開いて、ユーザーがそれ以外の場所をクリックしたときのように)。

dispatchTouchEventMainActivityで上書きしようとしましたが、通常すべてのACTION_DOWNイベントをインターセプトすると、クリックがディスパッチされる前に編集コントロールが非表示になります(もちろん)。
イベントをディスパッチせずに、ユーザーがどのコントロールに触れたかを検出する可能性はありますか?

すべてをインターセプトするACTION_UPと、ユーザーがロングクリックを終了すると編集コントロールが削除されます。ACTION_UPそして、私は特定のものがロングタッチに属するかどうかを避けようとしています。これは本当に厄介なコードを生成するからです。

どのイベントを聞くべきかアイデアはありますか?
それとも、私の目標を達成するためのより良い代替方法を知っていますか?

4

0 に答える 0