2016-09-29 47 views
0

有没有办法改变TextView查找电话号码的方式?Android TextView自动链接修改电话号码检测?

事情是,它检测国际格式相当好,像+49123456789,但它失败的本地格式化数字,如0699777666555(没有前面的“+”字符)。

我们还需要这些号码。

TextView的设置与autoLink="all"

<TextView 
     android:id="@+id/chat_message" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ... some other settings ... 
     android:autoLink="all" 
     android:linksClickable="true" 
     android:textColorLink="@color/darkblue" 
     android:textColor="@color/black"/> 

我们有内部的数字(如5532)及本地电话号码没有任何前缀像12345678这将是巨大的,如果他们可以太突出,没有任何或者至少不需要太多的编码。

对此的任何解决方案? 在此先感谢!

+0

机器人:自动链接= “网页|电子邮件|电话” – kgandroid

+0

“所有” 涵盖所有这三个。它*显示电话号码,但不是所有必需的格式。请仔细阅读该问题,谢谢。 – Grisgram

+0

我想补充说,Android 6+似乎正确地找到这些数字,但不是旧版本。但问题保持不变 - 我们需要修改它,以便旧版本也可以找到这些数字。 – Grisgram

回答

1

尝试这样做编程:

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); 
    } 

} 

然后用AutoLinkifyTextView而不是TextView的

+0

有趣的方法 - 我会玩这个有点 - 非常感谢你的这个建议! – Grisgram

+0

是否有效? – kgandroid

+2

是的,它工作得很好 - 我只是把代码放在setText中,用“+ xx”代替“0”(空白+数字零),其中xx是当地国家的国际号码,现在所有链接都是正确的。非常感谢 - 我会接受这个答案。事实上,我寻找更多的模式可以开始一个本地号码,所以“0”只是一个例子,在这里我的答案很简短。但是,是的,现在一切都很好:) – Grisgram

相关问题