2012-05-10 8 views
5

Ho un TextView con Android: autoLink = "web". Il testo contiene alcuni URL.Android - Perché l'autolink ignora il percorso radice di un URL?

Ad esempio:
http://example.com/

Ma se fusi, collega lo schema di nome e il nome di dominio, ma ignora il percorso principale.

Esempio rende come:
http://example.com/

Perché fa fare questo e come faccio a farlo autolink URL completi correttamente?

Edit: Inoltre, gli URL seguito da un fullstop o virgola:
http://example.com/,

vengono resi come:
http://example.com/,

Nota che StackExchange collegamenti automatici correttamente (guardare il sorgente per questa domanda) .

Edit: Sam, questo è il codice:

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

po 'di testo:

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

dovrebbe rendere come:
tre esempi, completo http://isokeys.sourceforge.net/ percorso principale http://isokeys.sourceforge.net mancanti e seguito con un fullstop http://isokeys.sourceforge.net/.

è reso come:
tre esempi, completo di percorso http://isokeys.sourceforge.net/root mancante http://isokeys.sourceforge.net e seguito con un fullstop http://isokeys.sourceforge.net/.

+0

Si prega di inviare l'XML, la stringa e qualsiasi altra cosa. – Sam

+0

'http: // example.com /' e 'http: // example.com' sono URL equivalenti. Qualsiasi server Web che li tratti diversamente è configurato male, IMHO. – CommonsWare

+0

CommonsWare: lo so, ma il primo è corretto. Quando renderizzato, la barra bianca sulla parte superiore si staglia come un pollice di sega. Ci deve essere sicuramente un modo per riconoscere correttamente gli URL corretti. Destra? –

risposta

0

vorrei solo sottolineare due cose:
1) Quando si imposta AutoLink alla parità " web ", sullo sfondo Android utilizza gli strumenti del pacchetto android.text.util per cercare elementi utilizzabili contenuti nel testo dell'oggetto View. Per impostazione predefinita, android.text.util.Linkify ha la propria opinione su cosa sono e non sono URL validi (in base alla corrispondenza delle espressioni regolari). Se volevi davvero utilizzare URL con una barra finale, tu o la virgola si aggiungevano alla fine, potevi implementare il tuo MatchFilter con le proprie espressioni regex. La documentazione può essere trovatasul sito degli sviluppatori Android
2) La barra finale non ha alcun significato in un URL standard perché viene utilizzata per indicare quella posizione in una gerarchia di risorse, ma se non si ha nulla seguendo la barra , quindi non stai attraversando un altro livello della gerarchia. L'aggiunta di una virgola o di un punto non dovrebbe essere una sintassi URL valida poiché ciò non aiuta a localizzare una risorsa tra la tua gerarchia, quindi presumo che l'espressione regolare di Android per la corrispondenza lo ignori per impedirti di ottenere MalformedURLException quando tenta di agire sul link

Problemi correlati