2012-05-10 15 views
5

Mam TextView z Androidem: autoLink = "web". Tekst zawiera kilka adresów URL.Android - Dlaczego autolink ignoruje ścieżkę główną adresu URL?

Na przykład:
http://example.com/

Ale przy wytapianiu, to łączy schemat imię i nazwę domeny, ale ignoruje ścieżkę korzeniowy.

Przykład renderuje jak:
http://example.com/

Dlaczego to zrobić i jak mogę zrobić to autolink pełni kwalifikowane adresy prawidłowo?

Edycja: Również adresy następnie KROPKA lub przecinkiem:
http://example.com/,

są renderowane jako:
http://example.com/,

Zauważ, że Stack Exchange Network Autoodsyłanie prawidłowo (patrz u źródła na to pytanie) .

Edit: Sam, jest to kod:

 <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" /> 

Część tekstu:

<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> 

powinien uczynić jak:
trzy przykłady, w pełni wykwalifikowanego http://isokeys.sourceforge.net/ brakuje ścieżkę główną http://isokeys.sourceforge.net a następnie z fullstop http://isokeys.sourceforge.net/.

jest renderowany jako:
trzy przykłady, w pełni kwalifikowaną ścieżkę http://isokeys.sourceforge.net/brakujący korzeń http://isokeys.sourceforge.net a następnie z KROPKA http://isokeys.sourceforge.net/.

+0

Proszę napisać odpowiedni XML, ciąg znaków i cokolwiek innego. – Sam

+0

'http: // example.com /' i 'http: // example.com' są równoważnymi adresami URL. Każdy serwer sieciowy, który je traktuje inaczej, jest źle skonfigurowany, IMHO. – CommonsWare

+0

CommonsWare: Wiem, ale pierwsza jest właściwa. Po wyrenderowaniu biała kreska na końcu wyróżnia się niczym kciuk. Z pewnością istnieje sposób na poprawne rozpoznanie prawidłowych adresów URL. Dobrze? –

Odpowiedz

0

Chciałbym tylko zwrócić uwagę na dwie rzeczy:
1) Po ustawieniu autolink na równi " web ", w tle Android używa narzędzi z pakietu android.text.util, aby wyszukać przydatne elementy zawarte w tekście twojego obiektu View. Domyślnie android.text.util.Linkify ma własną opinię na temat tego, czym są i nie są poprawnymi adresami URL (na podstawie dopasowania regex). Jeśli naprawdę chcesz używać adresów URL z końcowym ukośnikiem, na końcu lub na końcu dołączasz przecinek, możesz zaimplementować własny filtr MatchFilter z własnymi wyrażeniami regularnymi. Dokumentacja znajduje się pod adresem here na stronie dla programistów aplikacji na Androida:
2) Ukośny ukośnik nie ma żadnego znaczenia w standardowym adresie URL, ponieważ jest używany do wskazania tej pozycji w hierarchii zasobów, ale jeśli nic nie jest zgodne z ukośnikiem , wtedy nie przechodzisz na inny poziom hierarchii. Dołączanie przecinka lub kropki nie powinno być poprawną składnią adresu URL, ponieważ to nie pomaga w lokalizacji zasobu w hierarchii, więc zakładam, że wyrażenie regularne systemu Android dla dopasowania ignoruje je, aby uniemożliwić uzyskanie wyjątku MalformedURLException, gdy próbuje on działać na łączu

Powiązane problemy