gpt4 book ai didi

Android TextView,autoLink ="all"将所有数字显示为可点击

转载 作者:行者123 更新时间:2023-11-29 15:15:51 26 4
gpt4 key购买 nike

我有一个 ScrollView ,我有属性 android:clickable="true"android:autoLink="all"

我有一个用于 ScrollView 的字符串,电子邮件、电话号码等会出现并且可以正确点击。

但是,该字符串包含其他数字,例如 Years,它们也显示为可点击,我不希望这样;我怎样才能阻止这种情况发生?

最佳答案

不要使用autoLink="all",使用ones you need .

android:autoLink="web|email|phone" 可能涵盖您的用例。

这不需要 ScrollView 上的 clickable="true";相反,您应该在 TextViews 本身上设置 autoLink 属性;如果您有其他共同属性,也许可以提取样式。


添加新的 Linkify类到您的项目。从您有权访问 TextView 的地方(例如 Activity):

TextView myTextView = // get a reference to your textview
int mask = Linkify.ALL;
Linkify.addLinks(myTextView, mask);

addLinks(TextView, int) 方法是静态的,因此您可以在不创建 Linkify 实例的情况下使用它。返回值 (boolean) 指示是否链接了某些内容,但您可能不需要此信息,因此我们不理会它。

您需要确保没有将 autoLink 属性放在 TextViews 上,否则 setText(...) 实现仍将链接年(除非您完全覆盖 setText(...) 实现而不调用 super.setText(...))


为了获得额外的加分,您可以创建 TextView 的子类,当您在其上设置文本时,它将为您执行链接:

public class AutoLinkifyTextView extends TextView {

public AutoLinkifyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public AutoLinkifyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
public void setText(String text) {
super.setText(text);
parseLinks();
}

@Override
public void setText(int stringRes) {
super.setText(stringRes);
parseLinks();
}

private void parseLinks() {
Linkify.addLinks(this, Linkify.ALL);
}

}

当然,对于最高分,您可以从 attrs 中读取属性并使用 XML 属性中的正确掩码,但我更愿意摆脱该选项并在此处执行此操作.

关于Android TextView,autoLink ="all"将所有数字显示为可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957434/

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