gpt4 book ai didi

android - 格式化 TextView 使其看起来像链接

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:00 25 4
gpt4 key购买 nike

我一直在使用 android:autoLink 来格式化链接等,但我需要使用 android:onClick 所以我不能在这个案例。原因是我发现很容易不小心点击一个电话号码,所以我打算用确认 Dialog 拦截点击,然后打电话。

有没有一种简单的方法可以让我的 TextView 中的电话号码看起来像一个普通的可点击链接?我翻遍了 Android 源代码,但找不到任何特定的样式供我引用。

最佳答案

这是最短的解决方案:

final CharSequence text = tv.getText();
final SpannableString spannableString = new SpannableString( text );
spannableString.setSpan(new URLSpan(""), 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(spannableString, TextView.BufferType.SPANNABLE);

遗憾的是,点击效果并没有显示为点击了真实的 url 链接,但您可以像这样克服它:

    final CharSequence text = tv.getText();
final SpannableString notClickedString = new SpannableString(text);
notClickedString.setSpan(new URLSpan(""), 0, notClickedString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(notClickedString, TextView.BufferType.SPANNABLE);
final SpannableString clickedString = new SpannableString(notClickedString);
clickedString.setSpan(new BackgroundColorSpan(Color.GRAY), 0, notClickedString.length(),
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(final View v, final MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
tv.setText(clickedString);
break;
case MotionEvent.ACTION_UP:
tv.setText(notClickedString, TextView.BufferType.SPANNABLE);
v.performClick();
break;
case MotionEvent.ACTION_CANCEL:
tv.setText(notClickedString, TextView.BufferType.SPANNABLE);
break;
}
return true;
}
});

另一种解决方案是使用 Html.fromHtml(...) ,其中文本中有链接标签 ("") 。

如果您需要其他解决方案,请查看 this post .

关于android - 格式化 TextView 使其看起来像链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820526/

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