2

クリック ハンドラーを持つ別のビュー内にSpannableStringある my のテキストとしてセットがあります。TextViewテキスト内にClickableSpans があります。これは、あなたの言うとおり、クリック可能です。

私の問題は、クリック可能なスパン内でクリックした場合にタッチイベントをキャプチャし、親ビューに伝播しないようにする必要があることです(親には別のクリックハンドラーがあるため)。

コンテナー ビューは、アプリ内の投稿のフィードであり、それらの投稿にはハッシュタグ/メンション/リンクなどを含めることができます。ユーザーがハッシュタグをタップすると、クリック可能なスパンで処理されるハッシュタグに移動する必要があります。コンテナ自体によって処理される投稿に移動します。

この機能を実装する簡単なメカニズムはありますか?

4

2 に答える 2

1

私はうまく機能するひどいアンチパターンの解決策を思いつきました。

アプリ クラスでは、次のように定義しました。

public static boolean shouldIgnoreNextTouchEvent = false;

ClickableSpanのクリック ハンドラーでは、次のタッチ イベントを true にしないようにグローバル フラグを設定しました。

ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        App.shouldIgnoreNextTouchEvent = true;
        ...
    }
 }

次に、親ビューのハンドラーで:

@Override
public void onClick() {
    if(App.shouldIgnoreNextTouchEvent){
        App.shouldIgnoreNextTouchEvent = false;
        return;
    }
    ...
}

私はそれが良い解決策ではないことを知っていますが、それは魅力のように機能します.

于 2016-06-25T13:21:36.510 に答える