autoLink
属性は迷惑なバグがあります:あなたが電話番号にあなたの例ではクリックした場合、その後、戻って戻って、2番目のURLリンクをクリックしてください - それは電話番号を再度開きます。この属性は、ここでは、私は自分のクラスを実装していることを、複数のリンクがあるので、悪い作品は、XMLレイアウトの私のClickableLinksTextView
クラスによって、あなたのTextView
クラスを交換し、コードを変更することができ、あなたの例では
のGithub ClickableLinksTextView.java上のリンクありこのように:
ClickableLinksTextView textView = (ClickableLinksTextView)view.findViewById(R.id.mytext);
textView.setText("My text: +4412345678 Go to website: www.google.com Blah blah");
Linkify.addLinks(textView, Linkify.ALL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
textView.setMovementMethod(ArrowKeyMovementMethod.getInstance());
textView.setTextIsSelectable(true);
// the autoLink attribute must be removed, if you hasn't set it then ok, otherwise call textView.setAutoLink(0);
}
あなたの質問では、問題の元の原因はLinkMovementMethod
クラスとtextIsSelectable
属性もAndroid OSの開発者がthe Android OS source codeでこれを認め、全く互換性がないということです。
テキストの選択をサポートするテキストの移動方法を変更しないでください。これにより、カーソルの移動が妨げられます。
テキストビューが選択可能である場合、わずか2つの正しい移動方法値はnull
とArrowKeyMovementMethod
あります。だから、Linkify.addLinks
が不正な移動方法を設定していて、元に戻す必要があるため、私の例ではArrowKeyMovementMethod
を明示的に設定しています。
autoLink属性のバグは、Android開発者がリンク検出を正しくコピーしていないためです。 @cheng yangの答えにあるコード例を見ることができますが、コードの数にかかわらず、コードは最初のリンクをとるだけです。
あなたは何をしているのですか?リンクされたものだけを動作させるようにしようとしていますか? –
リンクを張ると、URLと電話をクリックできます。しかし、私がそれを選択可能にすると、これ以上クリックすることはできなくなります – pixel