19

TextViewを動的に作成し、テキストをリンク可能として設定したいと思います。テキスト値は「Google」です。同じように見えるインターネットやブログを参考にしましたが、期待通りの結果が得られませんでした。

さまざまな方法を試しましたが、表示される出力はテキスト全体とテキストのみです。私が試したコードは次のとおりです。

TextView tv1 = new TextView(this);
tv1.setLayoutParams(textOutLayoutParams);
// Make Linkable
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv1.setText(Html.fromHtml(l.getLeftString()));

/*SpannableString s = new SpannableString(l.getLeftString());
Linkify.addLinks(s, Linkify.WEB_URLS);
tv1.setText(s);                 
tv1.setMovementMethod(LinkMovementMethod.getInstance());
*/
dialogLayout.addView(tv1);

私の出力には「Google」が表示され、リンクはありません。Cleanプロジェクトとビルドも試しましたが、成功しませんでした。青い色で下線が引かれている「Google」(デフォルト)のみを表示し、Googleをクリックすると、ブラウザがhttp://google.comで開きます。

出力を取得するためのコードに欠けているものは何ですか?ところでREFの場合:64ビットのWin 7、Java、Eclipse、AndroidAPI8-2.2を使用しています

どんな助けでも大歓迎です。

4

6 に答える 6

45

私はついに次のコードを使用してそれを動作させました:

TextView tv1 = new TextView(this);
tv1.setLayoutParams(textOutLayoutParams);
tv1.setText(Html.fromHtml("<a href=\""+ l.getRightString() + "\">" + l.getLeftString() + "</a>"));
tv1.setClickable(true);
tv1.setMovementMethod (LinkMovementMethod.getInstance());
dialogLayout.addView(tv1);

l.getRightString()-http:\ www.google.comのようなURLが含まれていますl.getLeftString()-「GotoGoogle」のようなURLのテキストが含まれています

結果:ダイアログに青い色と下線付きのテキスト「Goto Google」を入力すると、ブラウザが開き、それぞれのページが表示されます。ブラウザを返す/終了すると、ブラウザは元の状態からアプリに再び表示されます。

お役に立てれば。

于 2012-08-27T08:41:29.923 に答える
12

HTMLを文字列に保存します

<string name="link">&lt;a href="http://www.google.com">Google&lt;/a></string>

textviewIDをに設定します

textViewLinkable

主なアクティビティでは、次のコードを使用します。

((TextView) findViewById(R.id.textViewLinkable)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) findViewById(R.id.textViewLinkable)).setText(Html.fromHtml(getResources().getString(R.string.link)));
于 2012-08-25T09:00:51.573 に答える
7

私はまた、以下を使用して解決したのと同じ問題に直面していました

String str_text = "<a href=http://www.google.com >Google</a>";
TextView link;
link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());
link.setText(Html.fromHtml(str_text));

リンクの色を青に変更する場合

link.setLinkTextColor(Color.BLUE);
于 2015-04-08T09:51:53.400 に答える
7

これがAndroidNまでテストされた私の簡単な実装です。

String termsText = "By registering, you are agree to our";
String termsLink = " <a href=https://www.yourdomain.com/terms-conditions.html >Terms of Service</a>";
String privacyLink = " and our <a href=https://www.yourdomain.com/privacy-policy.html >Privacy Policy</a>";
String allText = termsText + termsLink + privacyLink;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    ((TextView) findViewById(R.id.text_terms_conditions)).setMovementMethod(LinkMovementMethod.getInstance());
    ((TextView) findViewById(R.id.text_terms_conditions)).setText(Html.fromHtml(allText, Html.FROM_HTML_MODE_LEGACY));
} 
else {
    ((TextView) findViewById(R.id.text_terms_conditions)).setMovementMethod(LinkMovementMethod.getInstance());
    ((TextView) findViewById(R.id.text_terms_conditions)).setText(Html.fromHtml(allText));
}
于 2016-11-25T08:45:50.870 に答える
3
txtview.setMovementMethod(LinkMovementMethod.getInstance());

このステートメントをtextviewに渡し、string.xmlで文字列を次のように設定します

<string name="txtCredits"> <a href="http://www.google.com"></a></string>

次に、この文字列名「android:text = "@ string/txtCredits」をtxtviewがあるxmlクラスに渡します。

于 2016-02-19T08:00:07.943 に答える
0

このコードを使用してくださいautolink-javaGitHubで

このような

private String getLink(String string){

    LinkExtractor linkExtractor = LinkExtractor.builder()
            .linkTypes(EnumSet.of(LinkType.URL)) // limit to URLs
            .build();
    Iterable<Span> spans = linkExtractor.extractSpans(string);

    StringBuilder sb = new StringBuilder();
    for (Span span : spans) {
        String text = string.substring(span.getBeginIndex(), span.getEndIndex());
        if (span instanceof LinkSpan) {
            // span is a URL
            sb.append("<a href=\"");
            sb.append(text);
            sb.append("\">");
            sb.append(text);
            sb.append("</a>");
        } else {
            // span is plain text before/after link
            sb.append(text);
        }
    }

    return sb.toString();  // "wow <a href=\"http://test.com\">http://test.com</a> such linked"
}
于 2019-06-14T04:53:07.923 に答える