0

コミュニティ フォーラム用の Android アプリを開発しており、会話を表示する方法に苦労しています。1 ページは 30 の投稿で構成され、API ごとにバインドされています。投稿には、通常の書式設定 (強い、下線など) のテキストが含まれていますが、表、引用符、その他のブロック状の要素も含まれる場合があります。ほとんどの要素は入れ子にすることができます。たとえば、ブロックをタグ<table>で囲むことができます。<strong>各投稿は、静的レイアウトのヘッダーとフォーマットされていないテキストで構成されます。

私がこれまでに使用したアプローチは、会話全体を .html で HTML としてレンダリングすることWebViewです。CSS と Javascript を使用してカスタマイズでき、実装も簡単なので、これは非常に簡単です。ただし、この方法にはいくつかの欠点があります。

  • WebViewは非常に重いです。特に、アニメーション GIF や大きな画像が含まれている場合、高速な携帯電話でもスクロールやインタラクションがスムーズではなくなります。
  • アプリとのやり取りは多少制限されています。ビューがレンダリングされるときに特定の位置にスクロールするのははるかに困難です。ほとんどの場合、これは Javascript を介して処理する必要があり、レンダリング時間などがわからないためです。
  • ボタン、ロング タッチ、リンク クリックなどはすべて Javascript で処理する必要がありますが、これは特にさまざまなタッチ イベントの場合、やや面倒です。

今、私はこれを処理するためのさまざまな方法を考えていました。オプションは次のとおりです。

  • 動的ビュー階層を構築します。すべてのインライン タグは に含めることができSpansTextViews残りはいくつかの特定のレイアウトになります。短所: 画面上に多数のビューが表示されます。階層を適切に生成するのは難しく、たとえば、いくつかのブロック ビューを<strong>タグで囲むのは困難です。
  • Gmailで使用されているハイブリッド ビュー。これには、距離などを計算するための多くのJavascriptも必要であり、表示中にレイアウトが変更されると柔軟性が低下します。
  • ListView30WebViewsのA。WebView は非常に重いため、これも賢明ではない可能性があります。

これを解決する最善の方法は何ですか? 他の同様のアプリはこの問題をどのように解決していますか? Javascript のWebViews信頼性と安定性を高める方法はありますか?

4

1 に答える 1

1

ビュー階層を構築することで頭に釘を打ったと思います。行のカスタム リスト アイテム レイアウトを作成する可能性がありますが、複数行のテキスト ビューでうまくいくでしょう。次に、Html Spannedビルダーを使用して HTML を処理します。ただし、ビルダーがサポートしていない html タグを処理するには、 Html.TagHandlerを作成する必要があります。

于 2013-08-10T19:17:28.960 に答える