如何在自定义对话框中添加指向文本的超链接?
How to add a hyperlink to text in custom dialog?
我有一个自定义对话框,里面有一个 Textview。我想在文本中添加一个超链接。我尝试使用 setMovementMethod(LinkMovementMethod.getInstance())
但它仍然无法正常工作。但是,当我将它应用于不在我的自定义对话框中的文本视图时,它会起作用。
这是我的对话。
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(true);
dialog.setContentView(R.layout.license_dialog_layout);
TextView text = dialog.findViewById(R.id.text_dialog);
String str = "Link";
text.setText(context.getResources().getString(R.string.my_link, str));
dialog.show();
text.setMovementMethod(LinkMovementMethod.getInstance());
我的字符串资源:
<string name="my_link"><a href="https://www.google.com/">%1$s</a></string>
Xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:id="@+id/text_dialog" />
使用这一行:
text.setText(Html.fromHtml(context.getResources().getString(R.string.my_link)));
试着移动你的text.setMovementMethod(LinkMovementMethod.getInstance());
到 dialog.show();
、
之前
由于您在 string.xml 中定义了 html 文本,请尝试按如下方式获取它,然后将其设置为您的文本视图。
mTextView.setText(getText(R.string.my_styled_text));
这会选择带有样式的文本,而不仅仅是 getString()
中的字符串,因此您不需要 Html.fromHtml()
。
注意:- getString() 可能要求您将字符串包含在 CDDATA 中,例如:-
<string name="foo"><![CDATA[<a href="https://www.google.com/">Link</a>]]></string>
终于解决了。 2 件东西不见了。
首先,我必须像这样将我的字符串包含在 CDATA 中:
<string name="my_link"><![CDATA[<a href="https://www.google.com/">%1$s</a>]]></string>
然后我就改了这一行:
text.setText(Html.fromHtml(getResources().getString(R.string.my_link, str)));
我有一个自定义对话框,里面有一个 Textview。我想在文本中添加一个超链接。我尝试使用 setMovementMethod(LinkMovementMethod.getInstance())
但它仍然无法正常工作。但是,当我将它应用于不在我的自定义对话框中的文本视图时,它会起作用。
这是我的对话。
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(true);
dialog.setContentView(R.layout.license_dialog_layout);
TextView text = dialog.findViewById(R.id.text_dialog);
String str = "Link";
text.setText(context.getResources().getString(R.string.my_link, str));
dialog.show();
text.setMovementMethod(LinkMovementMethod.getInstance());
我的字符串资源:
<string name="my_link"><a href="https://www.google.com/">%1$s</a></string>
Xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:id="@+id/text_dialog" />
使用这一行:
text.setText(Html.fromHtml(context.getResources().getString(R.string.my_link)));
试着移动你的text.setMovementMethod(LinkMovementMethod.getInstance());
到 dialog.show();
、
由于您在 string.xml 中定义了 html 文本,请尝试按如下方式获取它,然后将其设置为您的文本视图。
mTextView.setText(getText(R.string.my_styled_text));
这会选择带有样式的文本,而不仅仅是 getString()
中的字符串,因此您不需要 Html.fromHtml()
。
注意:- getString() 可能要求您将字符串包含在 CDDATA 中,例如:-
<string name="foo"><![CDATA[<a href="https://www.google.com/">Link</a>]]></string>
终于解决了。 2 件东西不见了。
首先,我必须像这样将我的字符串包含在 CDATA 中:
<string name="my_link"><![CDATA[<a href="https://www.google.com/">%1$s</a>]]></string>
然后我就改了这一行:
text.setText(Html.fromHtml(getResources().getString(R.string.my_link, str)));