1

パターンやその他のユーティリティを使用してこれを少し理解しようとしましたが、まだ機能していません。

HTML リンクがあるとします。

 <a href="http://www.google.com">Google, Inc.</a>

リンクをテキスト ビューにしたいのですが、リンクのテキストを Google, Inc. ではなく実際の URL として設定します。

たとえば、受け取ったデータが次の場合:

-- 検索を試してみたい場合は、 にアクセス<a href="http://www.google.com">Google, Inc.</a>してください。簡単です。

次のように表示したい:

-- 検索を試してみたい場合は、http://www.google.comにアクセスしてください。簡単です。

それ以外の:

-- 検索を試してみたい場合は、Google, Inc. にアクセスしてください。簡単です。

Html.fromHtml() により、「Google, Inc.」と表示されます。自動的に、しかし私が望む結果ではありません。

また、特にこの例ではこれが機能する必要はありません。データとして取得するリンクがわからないため、すべての html リンクで機能する必要があります。

4

2 に答える 2

1

それは実際にはかなりトリッキーです....しかし、私はそうする方法を見つけました。

SOに感謝します。

ここに答えがあります:

TextView tvYourTextView = ( TextView ) findById( R.id.yourTextViewThatShowsALink );

tvYourTextView.setMovementMethod(LinkMovementMethod.getInstance()); //that will make your links work.

PS: 使用することを忘れないでくださいHtml.fromHtml("your content as html")

于 2012-07-01T05:22:08.207 に答える
0

Linkifyを使用して文字列を自分で解析し、必要なリンクを作成することをお勧めします。

Linkify を設定して生の Web アドレスを検索し、テキスト内のリンクに変換します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web"
    />

この関数は、html タグから生のアドレスを引き出します。

public String parseLinks(String raw) {
    String openTag = "<a href=\"";
    String closeTag = "</a>";
    String result = "";

    int start = 0;
    int middle = raw.indexOf(openTag);
    int end;
    while(middle > -1) {
        result += raw.substring(start, middle);

        end = raw.indexOf("\">", middle);
        result += raw.substring(middle + openTag.length(), end);

        start = raw.indexOf(closeTag, end) + closeTag.length(); 
        middle = raw.indexOf(openTag, start);
    }

    result += raw.substring(start, raw.length());
    return result;
}

この関数はエラー チェックを行わないことを理解してください。これを自分で追加することをお勧めします。

次のように、parseLinks() から返された文字列を TextView に渡すだけです。

textView.setText(parseLinks(rawHTML));

それが役立つことを願っています!

于 2012-07-01T04:55:34.937 に答える