2012-05-10 9 views
5

Tengo un TextView con Android: autoLink = "web". El texto contiene algunas URL.Android - ¿Por qué autolink ignora la ruta raíz de una URL?

Por ejemplo:
http://example.com/

Pero cuando se representa, se une el esquema de nombre y nombre de dominio, pero ignora la ruta raíz.

Ejemplo renderiza como:
http://example.com/

¿Por qué hace esto y cómo puedo hacer que autoLink direcciones URL completas correctamente?

Editar: También, las direcciones URL seguidos por un fullstop o coma:
http://example.com/,

se estén prestando como:
http://example.com/,

Tenga en cuenta que StackExchange Autoenlazar correctamente (un vistazo a la fuente para esta pregunta) .

Editar: Sam, este es el código:

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

Parte del texto:

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

deberían representar como:
Tres ejemplos, completamente calificado http://isokeys.sourceforge.net/ faltante ruta raíz http://isokeys.sourceforge.net y siguió con una Fullstop http://isokeys.sourceforge.net/.

se representa como:
Tres ejemplos, completamente calificado de ruta http://isokeys.sourceforge.net/root falta http://isokeys.sourceforge.net y siguió con un fullstop http://isokeys.sourceforge.net/.

+0

Por favor, publique el XML correspondiente, la cadena y cualquier otra cosa. – Sam

+0

'http: // example.com /' y 'http: // example.com' son URL equivalentes. Cualquier servidor web que los trate de otra forma está mal configurado, en mi humilde opinión. – CommonsWare

+0

CommonsWare: Lo sé, pero el primero es correcto. Cuando se representa, la barra blanca en el extremo se destaca como un pulgar de sierra. Seguramente debe haber una manera de reconocer correctamente las URL correctas. ¿Derecha? –

Respuesta

0

me acaba de señalar dos cosas:
1) Al configurar autoLink a la igualdad " web ", en segundo plano Android usa herramientas del paquete android.text.util para buscar elementos procesables contenidos en el texto de su objeto View. De forma predeterminada, android.text.util.Linkify tiene su propia opinión sobre lo que son y no son URL válidas (basadas en la coincidencia de expresiones regulares). Si realmente desea utilizar las URL con una barra al final, usted o la coma agregada al final, puede implementar su propio MatchFilter con sus propias expresiones regulares. La documentación se puede encontrar here en el sitio de desarrolladores de Android
2) La barra diagonal no tiene ningún significado en una URL estándar porque se usa para indicar esa posición en una jerarquía de recursos, pero si no tiene nada siguiendo la barra oblicua , entonces no estás atravesando otro nivel de la jerarquía. Agregar una coma o punto no debe ser una sintaxis válida de URL, ya que no ayuda a ubicar un recurso entre su jerarquía, así que supongo que la expresión regular de Android para la coincidencia lo ignora para evitar que obtenga una excepción MalformedURLException cuando intenta actuar en el enlace

Cuestiones relacionadas