我想在文本视图中创建一个链接。
我的链接看起来像这样:
我从array.xml获得的链接的文本
<item>Icons made by <a href="http://www.freepik.com" title="Freepik">Freepik</a></item>
我已经阅读了设置移动方法
textView.setMovementMethod(LinkMovementMethod.getInstance());
这没有影响
和
android:autoLink="web"
如果文字为http://www.freepik.com,则此方法有效,但如果我想将自定义文字作为链接,则无效。
viewHolder.textView.setClickable(true);
viewHolder.textView.setText(text);
viewHolder.textView.setMovementMethod(LinkMovementMethod.getInstance());
这是我用来填充textView
的代码我想在最后的文字中看起来像这样:
制作的图标答案 0 :(得分:1)
我认为你不可能以这种方式完成你想要的东西。
我认为最简单的解决方案是在不同的列表项中分隔您的链接。请记住,您可以使用不同高度的不同TextView,例如
或者,您可以转到自定义视图方法。如果您创建自定义视图(例如MultiLinkView),则可以将此视图添加到ListView。 我建议使用此解决方案,因为此方法允许您向视图项添加强大的逻辑。
我不能给你完整的代码,因为它应该太长了,但我能以正确的方式把你带来。
自定义视图是一个真正的Java类,它扩展了一些Android视图类。因此,当您实例化CustomView时,您可以将所需的所有参数传递给其构造函数(引用,链接,数组等)。 https://docs.microsoft.com/en-us/windows/uwp/graphics/key-frame-and-easing-function-animations
我的想法是找到一种方法将您需要的所有参数传递到自定义视图,然后找到一种表示数据的方法,将它们映射到您的链接。
我认为你应该放弃html解决方案而转向ClickableSpan
。
这是我在项目中使用的一段代码,可以单击我的字符串的一部分:
String text = "Hello <b>click me!</b> to go to internet!";
// create Spanned
Spanned spanned = Html.fromHtml(text);
// create SpannableString
SpannableString spanString = new SpannableString(spanned);
// set clickable part
ClickableSpan clickablePart = new ClickableSpan() {
@Override
public void onClick(View textView) {
if (connectionDetector.isConnectedToInternet()) {
// open browser or webview fragment
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setColor(Color.WHITE);
}
};
int startClickMe = spanString.toString().indexOf(text);
spanString.setSpan(clickablePart, startClickMe, text.length() + startClickMe, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
显然在onClick
你应该找到一种方法来获得正确的链接,但是,正如我之前所说,在自定义视图中,你可以根据需要添加任意数量的变量。我相信你能找到解决方案。
如果有帮助请告诉我