2012-05-10 5 views
5

Ich habe eine TextView mit Android: autoLink = "web". Der Text enthält einige URLs.Android - Warum ignoriert AutoLink den Stammpfad einer URL?

Zum Beispiel:
http://example.com/

Aber wenn gemacht, es verbindet den Namen Schema und Domain-Namen, aber ignoriert den Root-Pfad.

Beispiel macht wie:
http://example.com/

Warum es dies tut und wie mache ich es richtig voll qualifizierte URLs Autolink?

Edit: Auch gefolgt URLs durch eine fullstop oder Komma:
http://example.com/,

sind wie gemacht zu werden:
http://example.com/,

Beachten Sie, dass Stackautolinks richtig (für diese Frage an der Quelle anschauen) .

Edit: Sam, das ist der Code:

 <TextView android:id="@+id/open_source" 
      android:text="@string/open_source" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFF" 
      android:paddingBottom="10dp" 
      android:autoLink="web" /> 

Einige Text:

<string name="open_source">Three examples, fully qualified http://isokeys.sourceforge.net/ missing root path http://isokeys.sourceforge.net and followed with a fullstop http://isokeys.sourceforge.net/.</string> 

Sollte machen, wie:
Drei Beispiele, vollständig qualifizierte http://isokeys.sourceforge.net/http://isokeys.sourceforge.net Wurzelpfad fehlt und mit einem gefolgt fullstop http://isokeys.sourceforge.net/. Ist

gemacht wie:
Drei Beispiele, vollständig qualifizierte http://isokeys.sourceforge.net/fehlende Wurzelpfad http://isokeys.sourceforge.net und folgte mit einem fullstop http://isokeys.sourceforge.net/.

+0

Bitte geben Sie den relevanten XML-Code, den String und alles Weitere ein. – Sam

+0

'http: // example.com /' und 'http: // example.com' sind äquivalente URLs. Jeder Webserver, der sie anders behandelt, ist falsch konfiguriert, IMHO. – CommonsWare

+0

CommonsWare: Ich weiß, aber das erste ist richtig. Beim Rendern hebt sich der weiße Schrägstrich am Ende wie ein Sägedaumen ab. Es muss sicherlich eine Möglichkeit geben, korrekte URLs korrekt zu erkennen. Recht? –

Antwort

0

Ich möchte nur zwei Dinge hinweisen:
1) Wenn Sie Autolink gleich gesetzt " Web ", im Hintergrund Android verwendet Tools aus dem android.text.util-Paket, um nach umsetzbaren Elementen zu suchen, die im Text Ihres View-Objekts enthalten sind. Standardmäßig hat android.text.util.Linkify eine eigene Meinung darüber, was gültige URLs sind und welche nicht (basierend auf Regex-Matching). Wenn Sie wirklich URLs mit einem nachgestellten Schrägstrich, einem am Ende angehängten Komma oder einem Komma verwenden möchten, können Sie Ihren eigenen MatchFilter mit eigenen Regex-Ausdrücken implementieren. Dokumentation finden Sie here auf der Android-Entwickler-Website
2) Der abschließende Schrägstrich hat wirklich keine Bedeutung in einer Standard-URL, weil es verwendet wird, um diese Position in einer Hierarchie von Ressourcen angegeben, aber wenn Sie nichts nach dem Schrägstrich haben , dann triffst du nicht auf eine andere Hierarchieebene. Das Anhängen eines Kommas oder einer Periode sollte keine gültige URL-Syntax sein, da dies beim Auffinden einer Ressource in Ihrer Hierarchie nicht hilft. Daher nehme ich an, dass die Regex von Android die Übereinstimmung ignoriert, um eine MalformedURLException zu vermeiden, wenn sie versucht, auf die Verknüpfung einzugehen

Verwandte Themen