3

私の Android アプリには、リンク付きのテキスト ビューがあります。それぞれが特定のイベントを切り替えています (ブラウザを開く、別のアクティビティを開始するなど)。それを処理するために、これを行うよりも良い解決策は見つかりませんでした:

hi there!, this is <u>a action</u> and this is <b>another action</b>. This third one goes to <a href="http://google.com>Google</a>

次に、テキストビューを表示するときに、各リンクを SpannableStringBuilder を使用してカスタム スパン可能に変換します。

私はこれがハックであることを知っています。これが、他に良い方法があるかどうかを知りたい理由です。

私には2つのアイデアがあります:

  • 独自のマーシャリング システムでカスタム スパナブルを実装することは可能ですか? たとえば、次のようなカスタムのスパン可能な一致タグ:

    <div class="foo"></div>

次に、FooClickableSpannable拡張をClickableSpan自動的に検出しますfromHtml()

  • カスタム URL スキームを使用してアクティビティを開くことができましたが、他の方法がある場合にアプリ チューザーを表示しないようにする方法がわかりません。
4

1 に答える 1

1

独自のマーシャリング システムでカスタム スパナブルを実装することは可能ですか?

CharacterStyle特にのカスタム サブクラスを作成できますClickableSpanか? はい。

ただし、「独自のマーシャリングシステム」が何を意味するのかわかりません。

カスタム URL スキームを使用してアクティビティを開くことができましたが、他の方法がある場合にアプリ チューザーを表示しないようにする方法がわかりません。

まあ、真のカスタム スキーム (たとえば、orpiel://の代わりに) がセレクターを提示する可能性は低いです。http://content://

それ以外に、私が過去に行ったことは次のとおりです。

  • Html.fromHtml()基本的な変換に使用
  • 結果に対して使用getSpans()して、すべてのURLSpanオブジェクトを検索します
  • およびURLSpanを介して、必要に応じてこれらのオブジェクトを他の種類のカスタム スパンに置き換えました。removeSpan()setSpan()

別のアプローチは、のようなものを作成することですHtml.fromHtml()。これは、私自身の TODO リストの下位レベルで、より拡張性の高いものを作成したり、より多くの HTML コンストラクトを処理したりするなど、ガタガタと動いているものです。

于 2012-10-21T12:16:22.923 に答える