Das autoLink
Attribut hat einen ärgerlichen Fehler: Wenn Sie unter der Telefonnummer in Ihrem Beispiel klicken, dann kehren Sie zurück und klicken Sie auf dem zweiten URL-Link - es öffnet die Telefonnummer erneut. Dieses Attribut funktioniert so schlecht, mit mehreren Links, dass ich meine eigene Klasse implementiert habe, hier ist der Link auf Github ClickableLinksTextView.java
In Ihrem Beispiel können Sie Ihre TextView
Klasse von meiner ClickableLinksTextView
Klasse in dem XML-Layout ersetzen und den Code ändern dies wie:
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);
}
die ursprüngliche Ursache des Problems in Ihrer Frage ist, dass die LinkMovementMethod
Klasse und das textIsSelectable
Attribut überhaupt nicht kompatibel, auch Android OS Entwickler zugeben dies in the Android OS source code.
Sie für Text nicht die Methode Bewegung ändern, die Textauswahl zu unterstützen, da sie eine beliebige Cursor Verschiebung verhindern würde.
Wenn die Textansicht ist wählbar, die nur 2 korrekte Bewegung Methode Werte sind null
und ArrowKeyMovementMethod
. Deshalb setze ich in meinem Beispiel explizit ArrowKeyMovementMethod
, weil die Linkify.addLinks
eine falsche Bewegungsmethode einstellt und ich sie zurücksetzen sollte.
Was den Fehler des Attributs autoLink betrifft, liegt das daran, dass Android-Entwickler die Link-Erkennung nicht korrekt kopiert haben. Sie können das Codebeispiel in der Antwort von @cheng yang betrachten, der Code nimmt nur den ersten Link, egal wie viele von ihnen Sie haben.
Was machst du das funktioniert nicht? Macht der Versuch, es verlinkt zu machen, nur Arbeit? –
Wenn ich es verlinkt habe, kann ich auf URLs und Telefone klicken. Aber wenn ich es auswählbaren Klick machen kann nicht mehr – pixel