gpt4 book ai didi

android - 在 Html.fromHtml() 中显示导航到不同 Activity 或 fragment 的链接

转载 作者:行者123 更新时间:2023-11-29 22:59:04 24 4
gpt4 key购买 nike

在 string.xml 文件中,我有包含链接和图像的 Html 文本,我已经成功地展示了我的可绘制文件夹中的图像存储,但是显示从该 Activity 导航到另一个 Activity 的链接是我遇到问题的地方

用于在 TextView 中设置文本

myTextView.setText(Html.fromHtml(getString(R.string.my_local_string), Html.FROM_HTML_MODE_COMPACT), new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
int id;
if (source.equals("myPic.jpg")) {
id = R.drawable.myPic;
}
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
}, null));

在 string.xml 文件中

<string name="my_local_string<[CDATA[<imgsrc="myPic.jpg"/<br/<br/<a href="">MyLink</a><br/><a href="">MyAnotherLink</a><br/> ]]></string>

我必须检测对两个链接的点击

最佳答案

将 HTML 字符串解析为 SpannableStringBuilder,使用 URLSpan 找到 .. span,删除该 span 并将其替换为您自定义的 ClickableSpan。您可以在 onClick 中启动新 Activity 。您需要按照以下几行做一些事情。

SpannableStringBuilder builder = (SpannableStringBuilder) Html.fromHtml(getString(R.string.my_local_string), Html.FROM_HTML_MODE_COMPACT, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
int id;
if (source.equals("myPic.jpg")) {
id = R.drawable.myPic;
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
} else {
return null;
}
}
}, null);
URLSpan[] spans = builder.getSpans(0, builder.length(), URLSpan.class);
//Keep track of the links
int i=0;
for (URLSpan span : spans) {
int start = builder.getSpanStart(span);
int end = builder.getSpanEnd(span);
builder.removeSpan(span);
//Assign the value to a final variable so that it can be used inside the onClick
//to determine which link was clicked.
final int finalI = i;
builder.setSpan(new ClickableSpan() {
@Override
public void onClick(View v) {
Log.d("main", "link clicked");
String message;
if (finalI == 0) {
//First link
message = "First link clicked";
} else {
//Second link, and so on
message = "Second link clicked";
}
Toast.makeText(Main2Activity.this, message, Toast.LENGTH_SHORT).show();
} }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
i++;
}
textView.setText(builder);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(Color.TRANSPARENT);
<string name="my_local_string"><![CDATA[<imgsrc="myPic.jpg"/><br/><br/><a href="">MyLink</a><br/><a href="">MyAnotherLink</a><br/>]]></string>

关于android - 在 Html.fromHtml() 中显示导航到不同 Activity 或 fragment 的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57127323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com