次のように2つのハイパーリンクを含む文字列でTextViewを実装していますが、リンクは新しいブラウザーウィンドウを開きません。
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:gravity="center"
Android:textColor="#ffffff"
Android:paddingLeft="50dp"
Android:paddingRight="50dp"
Android:textSize="14sp"
Android:clickable="true"
Android:linksClickable="true"
Android:textColorLink="@color/colorPrimary"
Android:autoLink="web"
Android:text="@string/agree_terms_privacy"/>
String.xmlで
<string name="agree_terms_privacy">By continuing, you agree to our <a href="http://link1/terms">Terms of Use</a> and read the <a href="http://link1/privacy">Privacy Policy</a></string>
以下は、複数のStack Overflowポストを調べた後、私のために働いたソリューションです。実装に合わせて調整しました。
1。LinkMovementMethodを使用するために自動リンクを削除し、linksClickableをtrueに設定
_<TextView
Android:id="@+id/termsOfUse"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:gravity="center"
Android:textColor="#ffffff"
Android:paddingLeft="50dp"
Android:paddingRight="50dp"
Android:textSize="14sp"
Android:clickable="true"
Android:linksClickable="true"
Android:textColorLink="@color/colorPrimary"
Android:text="@string/agree_terms_privacy"/>
_
_Android:autoLink="web"
_プロパティを使用する場合、TextViewでtextView.setAutoLinkMask(0);
を呼び出す前に、setText()
でオーバーライドする必要があります。また、必要に応じてHarshalの答えのようにリンクをアクティビティでクリック可能に設定することもできますが、既にレイアウトに含まれているため、リンクを残しました。また、後で使用するtermsOfUse
というIDをTextViewに追加しました。
2。strings.xmlで<を_<
_に置き換え、URLの前後の二重引用符を削除
これは、文字列リソースを取得するときに、埋め込まれたhtmlを正しく解析せず、何らかの理由で二重引用符をエスケープしないためです。代わりに:
_<string name="agree_terms_privacy">By continuing, you agree to our <a href="http://link1/terms">Terms of Use</a> and read the <a href="http://link1/privacy">Privacy Policy</a></string>
_
あなたがしたいでしょう:
_<string name="agree_terms_privacy">By continuing, you agree to our <a href=http://link1/terms>Terms of Use</a> and read the <a href=http://link1/privacy>Privacy Policy</a></string>
_
。文字列リソースを解析してTextViewにバインドします
_Spanned policy = Html.fromHtml(getString(R.string.agree_terms_privacy));
TextView termsOfUse = (TextView)findViewById(R.id.termsOfUse);
termsOfUse.setText(policy);
termsOfUse.setMovementMethod(LinkMovementMethod.getInstance());
_
注:Html.fromHtmlはAPI 24で非推奨になりました(必要に応じてこれを処理する方法の詳細については この投稿 を参照してください)。このメソッドを使用して、文字列から期待されるHTML形式を取得します。
以下のコードスニペットをご覧ください。それが役立つことを願っています。
TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));
私のためのこの仕事
これをテキストビューに追加します:Android:autoLink = "all" Android:clickable = "true"
https://www.youtube.com/watch?v=UnJxyfyDyH
これがお役に立てば幸いです。
2つの異なるアクションが必要なため、2つのTextViews
を使用することをお勧めします。
TextView yourTermsOfUseTextView = (TextView) findViewById(R.id.your_id);
yourTermsOfUseTextView.setOnclickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(your_download_link));
startActivity(myIntent);
}
});
プライバシーポリシーを繰り返します。
Textviewに以下のコードを追加するだけです
Android:autoLink="email"