Googleのようなテキストビューテキストへのリンクを作成したい。とにかくこのようなリンクを作ることはありますか?(ie)Googleという単語をクリックすると、適切なリンクが開きます。どんなアイデアでも大歓迎です。
Googleのようなテキストビューテキストへのリンクを作成したい。とにかくこのようなリンクを作ることはありますか?(ie)Googleという単語をクリックすると、適切なリンクが開きます。どんなアイデアでも大歓迎です。
回答:
これを試して、何が起こるか教えてください。
Javaコードの使用:
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));
APIレベル> = 24以降Html.fromHtml(String source)
は非推奨になりfromHtml(String, int)
、代わりに、を使用します。
textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
または、レイアウトxmlファイル内のTextViewウィジェット属性内
android:autoLink="web"
android:linksClickable="true"
android:autoLink="web"
、XMLから削除する必要があることを述べておいてください。私は両方を持っていましたが、うまくいきませんでした。
android:autoLink="web"
TextViewのxmlで使用します。クリック可能なURLを自動的に変換する必要があります(テキストで見つかった場合)
すべてのテスト済みで動作する100%
ソリューション:android:autoLink="web"
以下は完全な
サンプルレイアウト Xmlの例です
<TextView
android:id="@+id/txtLostpassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:autoLink="email"
android:gravity="center"
android:padding="20px"
android:text="@string/lostpassword"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/txtLostpassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:autoLink="web"
android:gravity="center"
android:padding="20px"
android:text="@string/defaultpassword"
android:textAppearance="?android:attr/textAppearanceSmall" />
string.xmlの文字列
<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>
<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>
これは、Textviewのデフォルトプロパティを使用して行うこともできます
android:autoLink="email"
注:-Html.fromHtmlはAndroidNでは非推奨です
あなたAndroid N
はAndroidのチェックとサポート以上のバージョンを行う必要があります
//Set clickable true
tagHeading.setClickable(true);
//Handlle click event
tagHeading.setMovementMethod(LinkMovementMethod.getInstance());
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>", Html.FROM_HTML_MODE_LEGACY));
} else {
tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>"));
}
あるいは
プログラムでTextViewにautoLinkフラグを追加することはできません。
android:autoLink = "web"
android:linksClickable = "true"
この方法では、<a href='somelink'>
タグを追加する必要はありません。
これは不利な点です。追加hyperlink
したい場合は、text
この方法では実行できません。たとえば、次のようなことはできません。- [ hiteshsahu ] [1]
<TextView
android:id="@+id/tag_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tag_ll"
android:layout_gravity="left"
android:layout_margin="10dp"
android:autoLink="web"
android:linksClickable="true"
android:text="https://github.com/hiteshsahu"
android:textColor="@color/secondary_text" />
両方のアプローチの結果:-
SDKの最新バージョンfromHtml
は非推奨です以下の行を使用してください
String yourtext = "<a style='text-decoration:underline' href='http://www.sample.com'> Sample Website </a>";
if (Build.VERSION.SDK_INT >= 24) {
textView.setText(Html.fromHtml(yourtext, Html.FROM_HTML_MODE_LEGACY));
} else {
textView.setText(Html.fromHtml(yourtext));
}
テキストビューの以下の拡張機能を作成しました。
@SuppressLint("SetTextI18n")
fun TextView.makeHyperLink(url: String) {
text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml("<a href='${url}'>${text}</a>", Html.FROM_HTML_MODE_COMPACT)
} else {
Html.fromHtml("<a href='${url}'>${text}</a>")
}
movementMethod = LinkMovementMethod.getInstance()
isClickable = true
}
このように呼ぶ
tvTos.makeHyperLink(tos_url)
テキストをパラメータとして渡すこともできます。