2016-09-29 4 views
0

autoLink TextViewが電話番号を検出する方法を変更する方法はありますか?Android TextViewのオートリンクで電話番号の検出が変更されていますか?

+49123456789のように、国際的なフォーマットがかなりうまく検出されますが、0699777666555(先頭の「+」文字なし)のようなローカルフォーマット番号では失敗します。

これらの番号も使用できる必要があります。 TextViewには、私たちは、12345678のような任意の接頭辞なし(5532など)内部番号とローカルの電話番号を持っている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"/> 

に設定されている

彼らはどのなし、あまりにも強調表示することができます場合は、素晴らしいことです少なくとも、あまりにも多くのコーディングを必要とせずに。

これに対する解決策はありますか? ありがとうございます!プログラム的にこれを行うには

+0

アンドロイド:オートリンク= "ウェブ|メール|電話" – kgandroid

+0

は "すべて" すべてのこれらの3つをカバーしています。電話番号は表示されますが、すべての必要な形式で表示されるわけではありません。ご質問をよくお読みください、ありがとうございます。 – Grisgram

+0

私が追加したいのは、アンドロイド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); 
    } 

} 

、その後、代わりのTextView

AutoLinkifyTextViewを使用
+0

興味深いアプローチ - これでちょっと試してみます - このご意見ありがとうございます! – Grisgram

+0

それは働いていますか? – kgandroid

+2

はい、それはかなりうまくいった - ちょうどsetTextにコードを入れて、 "0"(空白+数字のゼロ)を "+ xx"に置き換えます。ここで、xxは現地番号です。ありがとう、私はその答えを受け入れるでしょう。実際には、ローカル番号の開始方法をさらに多くのパターンで検索するので、ここでは「0」は私の答えを短くするための例に過ぎません。しかし、はい、すべて今良いです:) – Grisgram

関連する問題